Commit bfe881255c74800147523b59c85328a1a826ba21
Committed by
Al Viro
1 parent
5a3e5cb8e0
Exists in
master
and in
7 other branches
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 <jack@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff
fs/super.c
... | ... | @@ -510,7 +510,7 @@ |
510 | 510 | sb->s_count++; |
511 | 511 | spin_unlock(&sb_lock); |
512 | 512 | down_read(&sb->s_umount); |
513 | - if (sb->s_root && (wait || sb->s_dirt)) | |
513 | + if (sb->s_root) | |
514 | 514 | sb->s_op->sync_fs(sb, wait); |
515 | 515 | up_read(&sb->s_umount); |
516 | 516 | /* restart only when sb is no longer on the list */ |