From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roman Gushchin Subject: [PATCH v9 6/8] writeback, cgroup: split out the functional part of inode_switch_wbs_work_fn() Date: Tue, 8 Jun 2021 16:02:23 -0700 Message-ID: <20210608230225.2078447-7-guro@fb.com> References: <20210608230225.2078447-1-guro@fb.com> Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=facebook; bh=Y6Lte7k+x+m8kEVnaBrF4622rOW8f0AmfUvQ98eX5ng=; b=FuapzUxEVa8KOgKLgQaxuvrNq1ujRgK9xp+HnWJnTQ+f11vghbB3iJR1l/0OmUKnGiE+ eqG1D/lMcSN6AlXb/xTz4sQIL9SeF3+NU8brn6xWea8Ho1LUgh/Jp4lYDqg6BXUDmRvQ yHP5sibK6U76NTLfar+JJcV3O7cS9ERu2d4= In-Reply-To: <20210608230225.2078447-1-guro@fb.com> List-ID: Content-Type: text/plain; charset="us-ascii" To: Andrew Morton , Tejun Heo Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexander Viro , Jan Kara , Dennis Zhou , Dave Chinner , cgroups@vger.kernel.org, Roman Gushchin Split out the functional part of the inode_switch_wbs_work_fn() function as inode_do switch_wbs() to reuse it later for switching inodes attached to dying cgwbs. This commit doesn't bring any functional changes. Signed-off-by: Roman Gushchin Reviewed-by: Jan Kara Acked-by: Tejun Heo Acked-by: Dennis Zhou --- fs/fs-writeback.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 18f4a27b8046..8240eb0803dc 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -351,15 +351,12 @@ static void bdi_up_write_wb_switch_rwsem(struct bac= king_dev_info *bdi) up_write(&bdi->wb_switch_rwsem); } =20 -static void inode_switch_wbs_work_fn(struct work_struct *work) +static void inode_do_switch_wbs(struct inode *inode, + struct bdi_writeback *new_wb) { - struct inode_switch_wbs_context *isw =3D - container_of(to_rcu_work(work), struct inode_switch_wbs_context, work)= ; - struct inode *inode =3D isw->inode; struct backing_dev_info *bdi =3D inode_to_bdi(inode); struct address_space *mapping =3D inode->i_mapping; struct bdi_writeback *old_wb =3D inode->i_wb; - struct bdi_writeback *new_wb =3D isw->new_wb; XA_STATE(xas, &mapping->i_pages, 0); struct page *page; bool switched =3D false; @@ -470,11 +467,17 @@ static void inode_switch_wbs_work_fn(struct work_st= ruct *work) wb_wakeup(new_wb); wb_put(old_wb); } - wb_put(new_wb); +} =20 - iput(inode); - kfree(isw); +static void inode_switch_wbs_work_fn(struct work_struct *work) +{ + struct inode_switch_wbs_context *isw =3D + container_of(to_rcu_work(work), struct inode_switch_wbs_context, work)= ; =20 + inode_do_switch_wbs(isw->inode, isw->new_wb); + wb_put(isw->new_wb); + iput(isw->inode); + kfree(isw); atomic_dec(&isw_nr_in_flight); } =20 --=20 2.31.1