From 0385f1f9e3e5cb17047474037002500383237f47 Mon Sep 17 00:00:00 2001
From: Al Viro <viro@zeniv.linux.org.uk>
Date: Fri, 19 Jun 2015 14:20:21 -0400
Subject: [PATCH] ufs_getfrag_block(): tidy up a bit

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/ufs/inode.c | 48 +++++++++++++++---------------------------------
 1 file changed, 15 insertions(+), 33 deletions(-)

diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index ed70147e1cb4..7f551b3e3ba4 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -398,40 +398,30 @@ out:
 
 static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buffer_head *bh_result, int create)
 {
-	struct super_block * sb = inode->i_sb;
-	struct ufs_sb_info * sbi = UFS_SB(sb);
-	struct ufs_sb_private_info * uspi = sbi->s_uspi;
-	struct buffer_head * bh;
-	int ret, err, new;
+	struct super_block *sb = inode->i_sb;
+	struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
+	int err = 0, new = 0;
 	unsigned offsets[4];
 	int depth = ufs_block_to_path(inode, fragment >> uspi->s_fpbshift, offsets);
-	unsigned long phys;
 	u64 phys64 = 0;
+	unsigned long phys;
 	unsigned frag = fragment & uspi->s_fpbmask;
 
 	if (!create) {
 		phys64 = ufs_frag_map(inode, offsets, depth);
-		if (phys64) {
-			phys64 += frag;
-			map_bh(bh_result, sb, phys64);
-		}
-		return 0;
+		goto out;
 	}
 
         /* This code entered only while writing ....? */
 
-	err = -EIO;
-	new = 0;
-	ret = 0;
-	bh = NULL;
-
 	mutex_lock(&UFS_I(inode)->truncate_mutex);
 
 	UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment);
-	if (!depth)
-		goto abort_too_big;
-
-	err = 0;
+	if (unlikely(!depth)) {
+		ufs_warning(sb, "ufs_get_block", "block > big");
+		err = -EIO;
+		goto out;
+	}
 
 	if (UFS_I(inode)->i_lastfrag < UFS_NDIR_FRAGMENT) {
 		unsigned lastfrag = UFS_I(inode)->i_lastfrag;
@@ -439,7 +429,7 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
 		if (tailfrags && fragment >= lastfrag) {
 			if (!ufs_extend_tail(inode, fragment,
 					     &err, bh_result->b_page))
-				goto abort;
+				goto out;
 		}
 	}
 
@@ -456,23 +446,15 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
 		phys64 = ufs_inode_getblock(inode, phys64, offsets[depth - 1],
 					fragment, &err, &phys, &new, bh_result->b_page);
 	}
+out:
 	if (phys64) {
 		phys64 += frag;
-		phys = phys64;
+		map_bh(bh_result, sb, phys64);
+		if (new)
+			set_buffer_new(bh_result);
 	}
-	if (err)
-		goto abort;
-	if (new)
-		set_buffer_new(bh_result);
-	map_bh(bh_result, sb, phys);
-abort:
 	mutex_unlock(&UFS_I(inode)->truncate_mutex);
-
 	return err;
-
-abort_too_big:
-	ufs_warning(sb, "ufs_get_block", "block > big");
-	goto abort;
 }
 
 static int ufs_writepage(struct page *page, struct writeback_control *wbc)
-- 
2.34.1