Skip to content

Commit

Permalink
f2fs: fix cgroup writeback accounting with fs-layer encryption
Browse files Browse the repository at this point in the history
commit 844545c upstream.

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 to
wbc_account_cgroup_owner().

Fixes: 578c647 ("f2fs: implement cgroup writeback support")
Cc: [email protected]
Reported-by: Matthew Wilcox (Oracle) <[email protected]>
Signed-off-by: Eric Biggers <[email protected]>
Acked-by: Tejun Heo <[email protected]>
Reviewed-by: Chao Yu <[email protected]>
Signed-off-by: Jaegeuk Kim <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
ebiggers authored and gregkh committed Mar 10, 2023
1 parent 85e1289 commit de33f12
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions fs/f2fs/data.c
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,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));
Expand Down Expand Up @@ -933,7 +933,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));

Expand Down Expand Up @@ -1007,7 +1007,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;

Expand Down

0 comments on commit de33f12

Please sign in to comment.