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);