mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
ovl: skip overlayfs superblocks at global sync
[ Upstream commit 32b1924b210a70dcacdf65abd687c5ef86a67541 ] Stacked filesystems like overlayfs has no own writeback, but they have to forward syncfs() requests to backend for keeping data integrity. During global sync() each overlayfs instance calls method ->sync_fs() for backend although it itself is in global list of superblocks too. As a result one syscall sync() could write one superblock several times and send multiple disk barriers. This patch adds flag SB_I_SKIP_SYNC into sb->sb_iflags to avoid that. Reported-by: Dmitry Monakhov <[email protected]> Signed-off-by: Konstantin Khlebnikov <[email protected]> Reviewed-by: Amir Goldstein <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]> Stable-dep-of: b836c4d29f27 ("ima: detect changes to the backing overlay file") Signed-off-by: Sasha Levin <[email protected]>
This commit is contained in:
parent
157c8056ab
commit
8c85e455f7
3 changed files with 7 additions and 3 deletions
|
|
@ -263,8 +263,8 @@ static int ovl_sync_fs(struct super_block *sb, int wait)
|
|||
return 0;
|
||||
|
||||
/*
|
||||
* If this is a sync(2) call or an emergency sync, all the super blocks
|
||||
* will be iterated, including upper_sb, so no need to do anything.
|
||||
* Not called for sync(2) call or an emergency sync (SB_I_SKIP_SYNC).
|
||||
* All the super blocks will be iterated, including upper_sb.
|
||||
*
|
||||
* If this is a syncfs(2) call, then we do need to call
|
||||
* sync_filesystem() on upper_sb, but enough if we do it when being
|
||||
|
|
@ -1710,6 +1710,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
|
|||
sb->s_xattr = ovl_xattr_handlers;
|
||||
sb->s_fs_info = ofs;
|
||||
sb->s_flags |= SB_POSIXACL;
|
||||
sb->s_iflags |= SB_I_SKIP_SYNC;
|
||||
|
||||
err = -ENOMEM;
|
||||
root_dentry = d_make_root(ovl_new_inode(sb, S_IFDIR, 0));
|
||||
|
|
|
|||
Loading…
Reference in a new issue