f2fs: fix cgroup writeback accounting with fs-layer encryption
Eric Biggers
maintainerPATCH 1/1 f2fs: fix cgroup writeback accounting with fs-layer encryption
From: Eric Biggers <[email protected]>
When writing a page from an encrypted file that is using filesystem-layer encryption (not inline encryption), f2fs encrypts the pagecache page into a bounce page, then writes the bounce page.
It also passes the bounce page to wbc_account_cgroup_owner(). That's incorrect, because the bounce page is a newly allocated temporary page that doesn't have the memory cgroup of the original pagecache page. This makes wbc_account_cgroup_owner() not account the I/O to the owner of the pagecache page as it should.
Fix this by always passing the pagecache page towbc_account_cgroup_owner().
--- fs/f2fs/data.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/f2fs/data.c +3 -3
@@ -739,7 +739,7 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio) }if (fio->io_wbc && !is_read_io (fio->op)) -wbc_account_cgroup_owner (fio->io_wbc, page,PAGE_SIZE ); +wbc_account_cgroup_owner (fio->io_wbc, fio->page,PAGE_SIZE );inc_page_count (fio->sbi,is_read_io (fio->op) ?__read_io_type (page) :WB_DATA_TYPE (fio->page));
@@ -949,7 +949,7 @@ int f2fs_merge_page_bio(struct f2fs_io_info *fio) }if (fio->io_wbc) -wbc_account_cgroup_owner (fio->io_wbc, page,PAGE_SIZE ); +wbc_account_cgroup_owner (fio->io_wbc, fio->page,PAGE_SIZE );inc_page_count (fio->sbi,WB_DATA_TYPE (page));
@@ -1023,7 +1023,7 @@ void f2fs_submit_page_write(struct f2fs_io_info *fio) }if (fio->io_wbc) -wbc_account_cgroup_owner (fio->io_wbc, bio_page,PAGE_SIZE ); +wbc_account_cgroup_owner (fio->io_wbc, fio->page,PAGE_SIZE ); io->last_block_in_bio = fio->new_blkaddr;
base-commit: de6b3a5e09b29c014bd04044b023896107cfa2ee
Signature · 1 line
2.39.1
Quoted 12 lines · Eric Biggers
From: Eric Biggers <[email protected]>
When writing a page from an encrypted file that is using filesystem-layer encryption (not inline encryption), f2fs encrypts the pagecache page into a bounce page, then writes the bounce page.
It also passes the bounce page to
wbc_account_cgroup_owner(). That's incorrect, because the bounce page is a newly allocated temporary page that doesn't have the memory cgroup of the original pagecache page. This makeswbc_account_cgroup_owner()not account the I/O to the owner of the pagecache page as it should.
Quoted 7 lines
Fix this by always passing the pagecache page to
wbc_account_cgroup_owner().Fixes 578c647879f7 ("f2fs: implement cgroup writeback support")Reported-by Matthew Wilcox (Oracle) <[email protected]>Signed-off-by Eric Biggers <[email protected]>
Thanks,
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
Quoted 12 lines · Eric Biggers
From: Eric Biggers <[email protected]>
When writing a page from an encrypted file that is using filesystem-layer encryption (not inline encryption), f2fs encrypts the pagecache page into a bounce page, then writes the bounce page.
It also passes the bounce page to
wbc_account_cgroup_owner(). That's incorrect, because the bounce page is a newly allocated temporary page that doesn't have the memory cgroup of the original pagecache page. This makeswbc_account_cgroup_owner()not account the I/O to the owner of the pagecache page as it should.
Quoted 7 lines
Fix this by always passing the pagecache page to
wbc_account_cgroup_owner().Fixes 578c647879f7 ("f2fs: implement cgroup writeback support")Reported-by Matthew Wilcox (Oracle) <[email protected]>Signed-off-by Eric Biggers <[email protected]>
Thanks.
Signature · 1 line
tejun
This patch was applied to jaegeuk/f2fs.git (dev) by Jaegeuk Kim <[email protected]>:
Hello:
This patch was applied to jaegeuk/f2fs.git (dev)
by Jaegeuk Kim <[email protected]>:
Quoted 6 lines · On Thu, 2 Feb 2023 17:02:39 -0800 you wrote:
From: Eric Biggers <[email protected]>
When writing a page from an encrypted file that is using filesystem-layer encryption (not inline encryption), f2fs encrypts the pagecache page into a bounce page, then writes the bounce page.
Quoted 7 lines
It also passes the bounce page to
wbc_account_cgroup_owner(). That's incorrect, because the bounce page is a newly allocated temporary page that doesn't have the memory cgroup of the original pagecache page. This makeswbc_account_cgroup_owner()not account the I/O to the owner of the pagecache page as it should.[...]
Here is the summary with links:
- [f2fs-dev] f2fs: fix cgroup writeback accounting with fs-layer encryption
https://git.kernel.org/jaegeuk/f2fs/c/844545c51a5b
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html