Skip to content

Commit f901c39

Browse files
ebiggersgregkh
authored andcommitted
f2fs: fix cgroup writeback accounting with fs-layer encryption
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]>
1 parent 117d4f6 commit f901c39

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

fs/f2fs/data.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
677677
}
678678

679679
if (fio->io_wbc && !is_read_io(fio->op))
680-
wbc_account_cgroup_owner(fio->io_wbc, page, PAGE_SIZE);
680+
wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
681681

682682
__attach_io_flag(fio);
683683
bio_set_op_attrs(bio, fio->op, fio->op_flags);
@@ -887,7 +887,7 @@ int f2fs_merge_page_bio(struct f2fs_io_info *fio)
887887
}
888888

889889
if (fio->io_wbc)
890-
wbc_account_cgroup_owner(fio->io_wbc, page, PAGE_SIZE);
890+
wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
891891

892892
inc_page_count(fio->sbi, WB_DATA_TYPE(page));
893893

@@ -961,7 +961,7 @@ void f2fs_submit_page_write(struct f2fs_io_info *fio)
961961
}
962962

963963
if (fio->io_wbc)
964-
wbc_account_cgroup_owner(fio->io_wbc, bio_page, PAGE_SIZE);
964+
wbc_account_cgroup_owner(fio->io_wbc, fio->page, PAGE_SIZE);
965965

966966
io->last_block_in_bio = fio->new_blkaddr;
967967

0 commit comments

Comments
 (0)