* [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption
@ 2023-02-03 0:55 Eric Biggers
2023-02-03 18:19 ` Tejun Heo
2023-03-08 4:33 ` Theodore Ts'o
0 siblings, 2 replies; 4+ messages in thread
From: Eric Biggers @ 2023-02-03 0:55 UTC (permalink / raw)
To: linux-ext4
Cc: linux-fscrypt, linux-fsdevel, Matthew Wilcox, Tejun Heo, stable
From: Eric Biggers <ebiggers@google.com>
When writing a page from an encrypted file that is using
filesystem-layer encryption (not inline encryption), ext4 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: 001e4a8775f6 ("ext4: implement cgroup writeback support")
Cc: stable@vger.kernel.org
Reported-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
fs/ext4/page-io.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
index beaec6d81074a..1e4db96a04e63 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -409,7 +409,8 @@ static void io_submit_init_bio(struct ext4_io_submit *io,
static void io_submit_add_bh(struct ext4_io_submit *io,
struct inode *inode,
- struct page *page,
+ struct page *pagecache_page,
+ struct page *bounce_page,
struct buffer_head *bh)
{
int ret;
@@ -421,10 +422,11 @@ static void io_submit_add_bh(struct ext4_io_submit *io,
}
if (io->io_bio == NULL)
io_submit_init_bio(io, bh);
- ret = bio_add_page(io->io_bio, page, bh->b_size, bh_offset(bh));
+ ret = bio_add_page(io->io_bio, bounce_page ?: pagecache_page,
+ bh->b_size, bh_offset(bh));
if (ret != bh->b_size)
goto submit_and_retry;
- wbc_account_cgroup_owner(io->io_wbc, page, bh->b_size);
+ wbc_account_cgroup_owner(io->io_wbc, pagecache_page, bh->b_size);
io->io_next_block++;
}
@@ -561,8 +563,7 @@ int ext4_bio_write_page(struct ext4_io_submit *io,
do {
if (!buffer_async_write(bh))
continue;
- io_submit_add_bh(io, inode,
- bounce_page ? bounce_page : page, bh);
+ io_submit_add_bh(io, inode, page, bounce_page, bh);
} while ((bh = bh->b_this_page) != head);
unlock:
unlock_page(page);
base-commit: 6d796c50f84ca79f1722bb131799e5a5710c4700
--
2.39.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption
2023-02-03 0:55 [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption Eric Biggers
@ 2023-02-03 18:19 ` Tejun Heo
2023-03-07 19:52 ` Eric Biggers
2023-03-08 4:33 ` Theodore Ts'o
1 sibling, 1 reply; 4+ messages in thread
From: Tejun Heo @ 2023-02-03 18:19 UTC (permalink / raw)
To: Eric Biggers
Cc: linux-ext4, linux-fscrypt, linux-fsdevel, Matthew Wilcox, stable
On Thu, Feb 02, 2023 at 04:55:03PM -0800, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> When writing a page from an encrypted file that is using
> filesystem-layer encryption (not inline encryption), ext4 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: 001e4a8775f6 ("ext4: implement cgroup writeback support")
> Cc: stable@vger.kernel.org
> Reported-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> Signed-off-by: Eric Biggers <ebiggers@google.com>
Acked-by: Tejun Heo <tj@kernel.org>
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption
2023-02-03 18:19 ` Tejun Heo
@ 2023-03-07 19:52 ` Eric Biggers
0 siblings, 0 replies; 4+ messages in thread
From: Eric Biggers @ 2023-03-07 19:52 UTC (permalink / raw)
To: linux-ext4, Theodore Ts'o
Cc: linux-fscrypt, linux-fsdevel, Matthew Wilcox, Tejun Heo, stable
On Fri, Feb 03, 2023 at 08:19:35AM -1000, Tejun Heo wrote:
> On Thu, Feb 02, 2023 at 04:55:03PM -0800, Eric Biggers wrote:
> > From: Eric Biggers <ebiggers@google.com>
> >
> > When writing a page from an encrypted file that is using
> > filesystem-layer encryption (not inline encryption), ext4 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: 001e4a8775f6 ("ext4: implement cgroup writeback support")
> > Cc: stable@vger.kernel.org
> > Reported-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> > Signed-off-by: Eric Biggers <ebiggers@google.com>
>
> Acked-by: Tejun Heo <tj@kernel.org>
>
> Thanks.
This patch hasn't been applied yet. Ted, I was hoping you would take it through
the ext4 tree. Can you do so when you have a chance?
- Eric
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption
2023-02-03 0:55 [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption Eric Biggers
2023-02-03 18:19 ` Tejun Heo
@ 2023-03-08 4:33 ` Theodore Ts'o
1 sibling, 0 replies; 4+ messages in thread
From: Theodore Ts'o @ 2023-03-08 4:33 UTC (permalink / raw)
To: linux-ext4, Eric Biggers
Cc: Theodore Ts'o, linux-fscrypt, stable, Matthew Wilcox,
Tejun Heo, linux-fsdevel
On Thu, 2 Feb 2023 16:55:03 -0800, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> When writing a page from an encrypted file that is using
> filesystem-layer encryption (not inline encryption), ext4 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.
>
> [...]
Applied, thanks!
[1/1] ext4: fix cgroup writeback accounting with fs-layer encryption
commit: ffec85d53d0f39ee4680a2cf0795255e000e1feb
Best regards,
--
Theodore Ts'o <tytso@mit.edu>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-03-08 4:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-03 0:55 [PATCH] ext4: fix cgroup writeback accounting with fs-layer encryption Eric Biggers
2023-02-03 18:19 ` Tejun Heo
2023-03-07 19:52 ` Eric Biggers
2023-03-08 4:33 ` Theodore Ts'o
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.