From 15be380f969f60d8638c0dbbb3af3ab42256d25e Mon Sep 17 00:00:00 2001 From: Yuezhang Mo Date: Wed, 7 Aug 2024 16:51:14 +0900 Subject: [PATCH] exfat: fix timing of synchronizing bitmap and inode Commit(f55c096f62f1 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: f55c096f62f1 ("exfat: do not zero the extended part") Signed-off-by: Yuezhang Mo Signed-off-by: Namjae Jeon --- file.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/file.c b/file.c index 43faa0f..6e20a66 100644 --- a/file.c +++ b/file.c @@ -53,7 +53,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; @@ -87,12 +87,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: