Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a4fdda7 authored by Al Viro's avatar Al Viro
Browse files

__ufs_truncate(); find cutoff distances into branches by offsets[] array



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 7bad5939
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -1324,12 +1324,16 @@ static void __ufs_truncate_blocks(struct inode *inode)
		ufs_trunc_tindirect(inode, 0);
		ufs_trunc_tindirect(inode, 0);
		break;
		break;
	case 3:
	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_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
		ufs_trunc_tindirect(inode, 0);
		ufs_trunc_tindirect(inode, 0);
		break;
		break;
	case 4:
	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;
	ufsi->i_lastfrag = DIRECT_FRAGMENT;
	mutex_unlock(&ufsi->truncate_mutex);
	mutex_unlock(&ufsi->truncate_mutex);