From: Jan Kara Date: Mon, 27 Apr 2009 14:43:49 +0000 (+0200) Subject: vfs: Call ->sync_fs() even if s_dirt is 0 (version 4) X-Git-Tag: v2.6.31-rc1~375^2~65 X-Git-Url: http://ftp.safe.ca/?p=safe%2Fjmp%2Flinux-2.6;a=commitdiff_plain;h=bfe881255c74800147523b59c85328a1a826ba21 vfs: Call ->sync_fs() even if s_dirt is 0 (version 4) sync_filesystems() has a condition that if wait == 0 and s_dirt == 0, then ->sync_fs() isn't called. This does not really make much sence since s_dirt is generally used by a filesystem to mean that ->write_super() needs to be called. But ->sync_fs() does different things. I even suspect that some filesystems (btrfs?) sets s_dirt just to fool this logic. Signed-off-by: Jan Kara Signed-off-by: Al Viro --- diff --git a/fs/super.c b/fs/super.c index 18d159d..fae91ba 100644 --- a/fs/super.c +++ b/fs/super.c @@ -510,7 +510,7 @@ restart: sb->s_count++; spin_unlock(&sb_lock); down_read(&sb->s_umount); - if (sb->s_root && (wait || sb->s_dirt)) + if (sb->s_root) sb->s_op->sync_fs(sb, wait); up_read(&sb->s_umount); /* restart only when sb is no longer on the list */