ufs: use the branch depth in ufs_getfrag_block()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 4 Jun 2015 18:34:43 +0000 (14:34 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 6 Jul 2015 21:39:54 +0000 (17:39 -0400)
we'd already calculated it...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/inode.c

index 0f0c6dfccd105f80da6acde53476611f6ceda44d..5c4a4abae65244121a771c341b1ffc5abc780310 100644 (file)
@@ -465,9 +465,7 @@ static int ufs_getfrag_block(struct inode *inode, sector_t fragment, struct buff
        mutex_lock(&UFS_I(inode)->truncate_mutex);
 
        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;
 
        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,      \
                          &err, NULL, NULL, NULL)
 
-       if (ptr < UFS_NDIR_FRAGMENT) {
+       if (depth == 1) {
                bh = GET_INODE_DATABLOCK(ptr);
                goto out;
        }
        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));
                goto get_indirect;
        }
        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));
                goto get_double;
        }