From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13B50C76191 for ; Wed, 24 Jul 2019 20:04:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DEC67214AF for ; Wed, 24 Jul 2019 20:04:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563998677; bh=icLxmOzP5cnKR3UNmUJUjo+fsg63x/VTajJRlS/YNwE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=KqZUPFNDeDi054lnP21z30zEHz1jv1zfAsCg9x1emcN+JdG2rQqrdL9ICSf14nJOs YtIFXI7DrHhMwKwW/bhaen9AZuxasC/Db72XEEJqzSICNreKNtWQUor4c7N6Z26Kk8 3URZ+18cGgMv9dE06Jh4HjRp2ogRumzuyz5USf7s= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392566AbfGXUEg (ORCPT ); Wed, 24 Jul 2019 16:04:36 -0400 Received: from mail.kernel.org ([198.145.29.99]:55730 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392557AbfGXUEe (ORCPT ); Wed, 24 Jul 2019 16:04:34 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5C59E205C9; Wed, 24 Jul 2019 20:04:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563998673; bh=icLxmOzP5cnKR3UNmUJUjo+fsg63x/VTajJRlS/YNwE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gA/2PbLW0VzpYhI14iu2mIrg/fwYb3meTF/djGU9n1ZZtOgcJBbtoWsmptxE8WU4+ w43MVxb/8VQWAKzH5djQ9uThHyhMmpItXMTrzMr7b3Y1ryfG5wXBeMjqTi2I5BCAt8 LAzJukur+59VUI4wva2tJ0PlwdDOCroeCBJZLF+0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tejun Heo , Jan Kara , Jens Axboe , Sasha Levin Subject: [PATCH 4.19 074/271] blkcg, writeback: dead memcgs shouldnt contribute to writeback ownership arbitration Date: Wed, 24 Jul 2019 21:19:03 +0200 Message-Id: <20190724191701.530839784@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190724191655.268628197@linuxfoundation.org> References: <20190724191655.268628197@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.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 Cc: Jan Kara Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- 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 9544e2f8b79f..7ee86d8f313d 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