Browse Source

ufs: use the branch depth in ufs_getfrag_block()

we'd already calculated it...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 10 years ago
parent
commit
71dd42846f
1 changed files with 4 additions and 6 deletions
  1. 4 6
      fs/ufs/inode.c

+ 4 - 6
fs/ufs/inode.c

@@ -465,9 +465,7 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
 	mutex_lock(&UFS_I(inode)->truncate_mutex);
 	mutex_lock(&UFS_I(inode)->truncate_mutex);
 
 
 	UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment);
 	UFSD("ENTER, ino %lu, fragment %llu\n", inode->i_ino, (unsigned long long)fragment);
-	if (fragment >
-	    ((UFS_NDADDR + uspi->s_apb + uspi->s_2apb + uspi->s_3apb)
-	     << uspi->s_fpbshift))
+	if (!depth)
 		goto abort_too_big;
 		goto abort_too_big;
 
 
 	err = 0;
 	err = 0;
@@ -490,17 +488,17 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
 	ufs_inode_getblock(inode, bh, x, fragment,	\
 	ufs_inode_getblock(inode, bh, x, fragment,	\
 			  &err, NULL, NULL, NULL)
 			  &err, NULL, NULL, NULL)
 
 
-	if (ptr < UFS_NDIR_FRAGMENT) {
+	if (depth == 1) {
 		bh = GET_INODE_DATABLOCK(ptr);
 		bh = GET_INODE_DATABLOCK(ptr);
 		goto out;
 		goto out;
 	}
 	}
 	ptr -= UFS_NDIR_FRAGMENT;
 	ptr -= UFS_NDIR_FRAGMENT;
-	if (ptr < (1 << (uspi->s_apbshift + uspi->s_fpbshift))) {
+	if (depth == 2) {
 		bh = GET_INODE_PTR(UFS_IND_FRAGMENT + (ptr >> uspi->s_apbshift));
 		bh = GET_INODE_PTR(UFS_IND_FRAGMENT + (ptr >> uspi->s_apbshift));
 		goto get_indirect;
 		goto get_indirect;
 	}
 	}
 	ptr -= 1 << (uspi->s_apbshift + uspi->s_fpbshift);
 	ptr -= 1 << (uspi->s_apbshift + uspi->s_fpbshift);
-	if (ptr < (1 << (uspi->s_2apbshift + uspi->s_fpbshift))) {
+	if (depth == 3) {
 		bh = GET_INODE_PTR(UFS_DIND_FRAGMENT + (ptr >> uspi->s_2apbshift));
 		bh = GET_INODE_PTR(UFS_DIND_FRAGMENT + (ptr >> uspi->s_2apbshift));
 		goto get_double;
 		goto get_double;
 	}
 	}