lkml.org 
[lkml]   [2019]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 38/73] blkcg, writeback: dead memcgs shouldn't contribute to writeback ownership arbitration
    Date
    From: Tejun Heo <tj@kernel.org>

    [ Upstream commit 6631142229005e1b1c311a09efe9fb3cfdac8559 ]

    wbc_account_io() collects information on cgroup ownership of writeback
    pages to determine which cgroup should own the inode. Pages can stay
    associated with dead memcgs but we want to avoid attributing IOs to
    dead blkcgs as much as possible as the association is likely to be
    stale. However, currently, pages associated with dead memcgs
    contribute to the accounting delaying and/or confusing the
    arbitration.

    Fix it by ignoring pages associated with dead memcgs.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/fs-writeback.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
    index 8b93d4b98428..baaed9369ab4 100644
    --- a/fs/fs-writeback.c
    +++ b/fs/fs-writeback.c
    @@ -721,6 +721,7 @@ void wbc_detach_inode(struct writeback_control *wbc)
    void wbc_account_io(struct writeback_control *wbc, struct page *page,
    size_t bytes)
    {
    + struct cgroup_subsys_state *css;
    int id;

    /*
    @@ -732,7 +733,12 @@ void wbc_account_io(struct writeback_control *wbc, struct page *page,
    if (!wbc->wb)
    return;

    - id = mem_cgroup_css_from_page(page)->id;
    + css = mem_cgroup_css_from_page(page);
    + /* dead cgroups shouldn't contribute to inode ownership arbitration */
    + if (!(css->flags & CSS_ONLINE))
    + return;
    +
    + id = css->id;

    if (id == wbc->wb_id) {
    wbc->wb_bytes += bytes;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-07-15 17:46    [W:4.023 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site