From 7a4fdda72451f094374324a552be9fc7de8f3e8d Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 18 Jun 2015 14:28:54 -0400 Subject: __ufs_truncate(); find cutoff distances into branches by offsets[] array Signed-off-by: Al Viro --- fs/ufs/inode.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index b4d6398a2d54..c2544d62adf2 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c @@ -1324,12 +1324,16 @@ static void __ufs_truncate_blocks(struct inode *inode) ufs_trunc_tindirect(inode, 0); break; case 3: - ufs_trunc_dindirect(inode, DIRECT_BLOCK - UFS_IND_BLOCK - uspi->s_apb, + ufs_trunc_dindirect(inode, + (offsets[1] << uspi->s_apbshift) + offsets[2], ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK)); ufs_trunc_tindirect(inode, 0); break; case 4: - ufs_trunc_tindirect(inode, DIRECT_BLOCK - UFS_NDADDR - uspi->s_apb - uspi->s_2apb); + ufs_trunc_tindirect(inode, + (offsets[1] << uspi->s_2apbshift) + + (offsets[2] << uspi->s_apbshift) + + offsets[3]); } ufsi->i_lastfrag = DIRECT_FRAGMENT; mutex_unlock(&ufsi->truncate_mutex); -- cgit v1.2.3