Commit d7ed5232 authored by Yuezhang Mo's avatar Yuezhang Mo Committed by Namjae Jeon
Browse files

exfat: fix timing of synchronizing bitmap and inode



Commit(f55c096f exfat: do not zero the extended part) changed
the timing of synchronizing bitmap and inode in exfat_cont_expand().
The change caused xfstests generic/013 to fail if 'dirsync' or 'sync'
is enabled. So this commit restores the timing.

Fixes: f55c096f ("exfat: do not zero the extended part")
Signed-off-by: default avatarYuezhang Mo <Yuezhang.Mo@sony.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
parent 4cece764
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
	clu.flags = ei->flags;

	ret = exfat_alloc_cluster(inode, new_num_clusters - num_clusters,
			&clu, IS_DIRSYNC(inode));
			&clu, inode_needs_sync(inode));
	if (ret)
		return ret;

@@ -77,12 +77,11 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
	ei->i_size_aligned = round_up(size, sb->s_blocksize);
	ei->i_size_ondisk = ei->i_size_aligned;
	inode->i_blocks = round_up(size, sbi->cluster_size) >> 9;
	mark_inode_dirty(inode);

	if (IS_DIRSYNC(inode))
	if (IS_SYNC(inode))
		return write_inode_now(inode, 1);

	mark_inode_dirty(inode);

	return 0;

free_clu: