Commit 5e205c48 authored by Chi Zhiling's avatar Chi Zhiling Committed by Namjae Jeon
Browse files

exfat: improve exfat_find_last_cluster



Since exfat_ent_get support cache buffer head, let's apply it to
exfat_find_last_cluster.

Signed-off-by: default avatarChi Zhiling <chizhiling@kylinos.cn>
Reviewed-by: default avatarYuezhang Mo <Yuezhang.Mo@sony.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
parent 06805f4c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@ int exfat_free_cluster(struct inode *inode, struct exfat_chain *p_chain)
int exfat_find_last_cluster(struct super_block *sb, struct exfat_chain *p_chain,
		unsigned int *ret_clu)
{
	struct buffer_head *bh = NULL;
	unsigned int clu, next;
	unsigned int count = 0;

@@ -308,10 +309,11 @@ int exfat_find_last_cluster(struct super_block *sb, struct exfat_chain *p_chain,
	do {
		count++;
		clu = next;
		if (exfat_ent_get(sb, clu, &next, NULL))
		if (exfat_ent_get(sb, clu, &next, &bh))
			return -EIO;
	} while (next != EXFAT_EOF_CLUSTER && count <= p_chain->size);

	brelse(bh);
	if (p_chain->size != count) {
		exfat_fs_error(sb,
			"bogus directory size (clus : ondisk(%d) != counted(%d))",