ufs: use the branch depth in ufs_getfrag_block()

we'd already calculated it...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2015-06-04 14:34:43 -04:00
parent 4b7068c8b1
commit 71dd42846f

View 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); 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 > if (!depth)
((UFS_NDADDR + uspi->s_apb + uspi->s_2apb + uspi->s_3apb)
<< uspi->s_fpbshift))
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;
} }