From 7a4fdda72451f094374324a552be9fc7de8f3e8d Mon Sep 17 00:00:00 2001
From: Al Viro <viro@zeniv.linux.org.uk>
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 <viro@zeniv.linux.org.uk>
---
 fs/ufs/inode.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'fs/ufs/inode.c')

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