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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EBD4C47422 for ; Thu, 18 Jan 2024 23:41:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7571D6B00A6; Thu, 18 Jan 2024 18:41:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 706826B00A7; Thu, 18 Jan 2024 18:41:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F5756B00A8; Thu, 18 Jan 2024 18:41:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4FE716B00A6 for ; Thu, 18 Jan 2024 18:41:18 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 17634A0257 for ; Thu, 18 Jan 2024 23:41:18 +0000 (UTC) X-FDA: 81694055436.30.B8F0C26 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf04.hostedemail.com (Postfix) with ESMTP id C09B34001A for ; Thu, 18 Jan 2024 23:41:15 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Z4GYvx1R; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of djwong@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=djwong@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705621276; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=elj0lM35OzfdWZY3l9G7QhXWv1q4bmE2A6PJlZR8S24=; b=qh8mP0IM4fqbTNZgn2/0JHM1DYC46egV48SYR2mOEldzoFPBCV1rGR4GlYtJe1hb7D6yI+ Q9SWOY8tkqxA5eHyq0jdFhWmWQBFSoymUNSiZYhSfnZo4NOBkjK0WJCXpfaoFCD4MTWv9v /0IYdX5BLmVJZxvYGL3xHTsT4l8mWQ8= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Z4GYvx1R; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of djwong@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=djwong@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705621276; a=rsa-sha256; cv=none; b=BPzmwlE9jbBCQe5Q766YUQG+xGMMfiMw9G/i3atlARBff/DnaFV3hNWS4mKeRqBSxuJ2DR SPQvSVtCBQr87i+VBq67+ruIWI4Q2mT2V1rYhJMwTINExGydNDJUXAngCsRIPRN54aZAA6 inHk3VWyUYt/t4uvpx1JUziiGvCAnzs= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 077F7CE1EBA; Thu, 18 Jan 2024 23:41:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F243CC433C7; Thu, 18 Jan 2024 23:41:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705621272; bh=HEpCjoKfmS67GJwIshU82X9AJCb9bY8hjiE2OkGJAf0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Z4GYvx1R++TBTsc2GgqBOCM6fcNOpK3Gqiyafa8JEVYBsB9YPpnsQMUDHa5lFvSsp 58bUx1LueM2tBymzv6OXLRHCIBk/5gVO0ESJOTw9rZ999a3labHdbLH2iH2vDGqS7f 67Z2dNAIUiTlUWtkfpFQLA8/8vG9EJcdxmSAER2V5Nmlaeu8kBZjSXyehsGxB26V9G Fz0gNKSA6gf0EJxhrfuFYVk9hcKB4arFmnR5cQbLWllJUhtihomoihVe04/b4ybViL WgOY/hp9OU5WNkuvIDJGndOrzpgMtOIVc1EJq2ZLM40qZPJlswaBthJ8iyGlr9uSPH sUFzSMXn5LFUA== Date: Thu, 18 Jan 2024 15:41:11 -0800 From: "Darrick J. Wong" To: Dave Chinner Cc: linux-xfs@vger.kernel.org, willy@infradead.org, linux-mm@kvack.org Subject: Re: [PATCH 10/12] xfs: place the CIL under nofs allocation context Message-ID: <20240118234111.GM674499@frogsfrogsfrogs> References: <20240115230113.4080105-1-david@fromorbit.com> <20240115230113.4080105-11-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240115230113.4080105-11-david@fromorbit.com> X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: C09B34001A X-Stat-Signature: 9pbjf3x1hraop9pz7zzt54pjnnu1tc9g X-HE-Tag: 1705621275-454229 X-HE-Meta: U2FsdGVkX18H8FbF2H0TigTVMYgyMV7hf6zgesL7Z6U2wUjGqwxvunB2fTH7t4OgyAEiqPqu+li3mzpZVaUKgmiQGl8sOj6qhLSmoDcEmEDCFPgfQ9pz2fXPkF9SDFTgy0svmHtguKDoWRFCij/55K3I1hLimObQNH5JfTgGKWycnwRHIX5hnZcUy31q+fqWfGaZY+cn0jd4vRPiI2CP5oRn2dtMlhphpdcSFokcz8SgH9D/a0E9g+FvZH1CR2VGtfmOuJqzmNQtcfx9jzK6wQEYCmGTxFsEZx+BoH+CD6yVvIfVmXWPbNaTbzGvODH9StGcxQcN62qNfCisL/BFhFjCCyyRjMP/Ewh3EW9UBFr94fna47g+TTLqk1OGvj4G7RycTUmD0zYEnayCTlKWgL74CYgyr4ed0EWp0nJNSGhS+XtZTTGq6sMrUafOBoAso5aeRX9FUizPq+Ovb3yLgAI90t0AdsrLjGABTGCt7XagoUi9soQCFX7Ts+rcpOQyvzmDCWEUG/X4FZE+hpA+rT4t9MJiLsoHjuLjk4LjD/xWFI6I6GalWDhB4BEEha632ndft8r6sOKrTyXAcHq/U/YHaHID1Bh/j/Wt8ebvyqvd5Yj4nwCczxez9IaBFtcrb4wCgUbYigvPV20vmmdhuaGRKgq8quA+gW4XCPnOYJFDSE3xuqeYUzECtl4exegWzW6+34LP4dQUNxYkuL3CIByccYG4kwrimHDEDUikzzGyQ5JWUZlgpIVn9Z4cHsuxRXum/SQyL7bVe9xQbxDdO0hgTo1dhXnIYiboWNkztbZPq7PFRIIp0kn+5BDTexeKFcQ27zcE3DiDRXpSO9aYjvbW1mOkF0fQzPQD4Xk7P9hvx1OEPMj37fkUZAOVu/OVWA2IVKp4Z801kCb6YhrP8T0JX79XrZKaEY1LcmPukOIyjdr1V9fL3NCemaoxpxAnTwppLe8bl/l22JtrBv/ T5lL+Cbc 9ZoZwxZHx0bDZVfnQ06SOoq04RisKTJWx6/ubFJM7fN8bY96VK72joXUKGGn8yuHsZvxoFoGPm9WNcKX0c2uQK83T7nFma+BgPQ55/LpyPFS7U1GxP1xwWecxuJHmKxjETuPnCAcgHEgShdbriRgMSGgUsMk7tIEwen2c9MzdtJ/gpzVnFVzCqQQBDfhDuRVXyEP90NYZnSK8ha8PyPUe4QrBqw8htFyPs+GCt4/+sfjf7qsgFAQNViEJbLNzndBCh33VOZ3k7TSNGFc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jan 16, 2024 at 09:59:48AM +1100, Dave Chinner wrote: > From: Dave Chinner > > This is core code that needs to run in low memory conditions and > can be triggered from memory reclaim. While it runs in a workqueue, > it really shouldn't be recursing back into the filesystem during > any memory allocation it needs to function. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_log_cil.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > index 815a2181004c..8c3b09777006 100644 > --- a/fs/xfs/xfs_log_cil.c > +++ b/fs/xfs/xfs_log_cil.c > @@ -100,7 +100,7 @@ xlog_cil_ctx_alloc(void) > { > struct xfs_cil_ctx *ctx; > > - ctx = kzalloc(sizeof(*ctx), GFP_NOFS | __GFP_NOFAIL); > + ctx = kzalloc(sizeof(*ctx), GFP_KERNEL | __GFP_NOFAIL); > INIT_LIST_HEAD(&ctx->committing); > INIT_LIST_HEAD(&ctx->busy_extents.extent_list); > INIT_LIST_HEAD(&ctx->log_items); > @@ -1116,11 +1116,18 @@ xlog_cil_cleanup_whiteouts( > * same sequence twice. If we get a race between multiple pushes for the same > * sequence they will block on the first one and then abort, hence avoiding > * needless pushes. > + * > + * This runs from a workqueue so it does not inherent any specific memory inherit? ^^^^^^^^ If that change is correct, Reviewed-by: Darrick J. Wong --D > + * allocation context. However, we do not want to block on memory reclaim > + * recursing back into the filesystem because this push may have been triggered > + * by memory reclaim itself. Hence we really need to run under full GFP_NOFS > + * contraints here. > */ > static void > xlog_cil_push_work( > struct work_struct *work) > { > + unsigned int nofs_flags = memalloc_nofs_save(); > struct xfs_cil_ctx *ctx = > container_of(work, struct xfs_cil_ctx, push_work); > struct xfs_cil *cil = ctx->cil; > @@ -1334,12 +1341,14 @@ xlog_cil_push_work( > spin_unlock(&log->l_icloglock); > xlog_cil_cleanup_whiteouts(&whiteouts); > xfs_log_ticket_ungrant(log, ticket); > + memalloc_nofs_restore(nofs_flags); > return; > > out_skip: > up_write(&cil->xc_ctx_lock); > xfs_log_ticket_put(new_ctx->ticket); > kfree(new_ctx); > + memalloc_nofs_restore(nofs_flags); > return; > > out_abort_free_ticket: > @@ -1348,6 +1357,7 @@ xlog_cil_push_work( > if (!ctx->commit_iclog) { > xfs_log_ticket_ungrant(log, ctx->ticket); > xlog_cil_committed(ctx); > + memalloc_nofs_restore(nofs_flags); > return; > } > spin_lock(&log->l_icloglock); > @@ -1356,6 +1366,7 @@ xlog_cil_push_work( > /* Not safe to reference ctx now! */ > spin_unlock(&log->l_icloglock); > xfs_log_ticket_ungrant(log, ticket); > + memalloc_nofs_restore(nofs_flags); > } > > /* > -- > 2.43.0 > >