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 AF155C021B3 for ; Mon, 24 Feb 2025 08:00:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0E77C6B007B; Mon, 24 Feb 2025 03:00:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 097456B0083; Mon, 24 Feb 2025 03:00:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EC7DD6B0085; Mon, 24 Feb 2025 03:00:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id CFF976B007B for ; Mon, 24 Feb 2025 03:00:10 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 55D8B140D86 for ; Mon, 24 Feb 2025 08:00:10 +0000 (UTC) X-FDA: 83154090180.24.4C2DBCB Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by imf28.hostedemail.com (Postfix) with ESMTP id ED2B0C000A for ; Mon, 24 Feb 2025 08:00:07 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=scylladb.com header.s=google header.b=WhGcQn4Z; dmarc=pass (policy=reject) header.from=scylladb.com; spf=pass (imf28.hostedemail.com: domain of raphaelsc@scylladb.com designates 209.85.216.52 as permitted sender) smtp.mailfrom=raphaelsc@scylladb.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740384008; a=rsa-sha256; cv=none; b=LWZE+7gwy4x9AA0kwpkzr6Tn+d2mUcIQ2RGxD2TO8ubUwa6XZenTncEHe7aTa6Fb2+sD2i zqTVqGVhPfKBaZ8ubwwHrFRaMk5AyY9k4BGuZrQtZnd8DSzkv/S1ghAQ92rxYIqbBs/Pbc 7nyozKleVXxcPDscdriH4AYiJM0tXAg= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=scylladb.com header.s=google header.b=WhGcQn4Z; dmarc=pass (policy=reject) header.from=scylladb.com; spf=pass (imf28.hostedemail.com: domain of raphaelsc@scylladb.com designates 209.85.216.52 as permitted sender) smtp.mailfrom=raphaelsc@scylladb.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740384008; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SVoA3KBTslaxKUJAlPiAwxSQFPk6ze1iD/cIE02/gTk=; b=Lh+8KEFMVcVJBu88XWfUKYKBmQRI4eoWg9k+BZq2kxuHl97L7INczZzmEAVEkHTH67imPO uCNshM2KAoytVagY4MxjpYRGszzjbiRgen/W/TF1z6yt0IjhfnCZ5ulfj6E6DZLp5q7Cta aScQJrUcc1qvGy7OAHxGAGozPW/V6dY= Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2fcce9bb0ecso8061148a91.3 for ; Mon, 24 Feb 2025 00:00:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=scylladb.com; s=google; t=1740384007; x=1740988807; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=SVoA3KBTslaxKUJAlPiAwxSQFPk6ze1iD/cIE02/gTk=; b=WhGcQn4Z6CMDQCds5bja/Ot7yIQukQSfbEfUeKeEBbl64SKHVqmaAnlNWDxC3t5yfg BqLiuuDBGE7zJPtbZTM2LWnPXvibSl8hedL4b1i4/13SIc4/tsCtTXxY2PG3PbuL1hQz HmpMz5SjzxuVEnwxjnpk3Xxu8fqsEO1ko/3oX0D30j/WsaS/DAGStRnK4iYaZju6SPD7 rWAjPXJJ7l5TYkkugTSy1WamZcKeP1ioH1Ls/uyCEs7tJc1NeazylGuFbUbPYdprE/eO jJYXmarDKF3wvYR9RcYCyHraKZv2VbrwbFdtrTkz7PTp+vmw1pZNSJcUrtWcSW0A5Dvx 92oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740384007; x=1740988807; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SVoA3KBTslaxKUJAlPiAwxSQFPk6ze1iD/cIE02/gTk=; b=HsCew6zXeRqcV7u4aayk8k948Hpi5pIpMPoUNalqhP418L+uawLMbzWEjjomY5P7PK +CQkkEuPEa0IOlsKYzeFHP+vBzEPDGq+vD09tzXkp3CODv8dixbT/Ripl/1xA6hCmKBp +HeexCywMn3hLN7arrxKVGPPVxxxiEsEaNxvrE136v+8EwUy1i4zIX+qG09aeeNNPN23 nAqYLQFckU74QmlDd/FS4gePVxQwCHhuIb6rUS1FxNeb0IDfeAFnoN3qRlplHlCJBh+J G7yVtpLTyYRhVn7AvwpglXIvLn9C+3eJLYizA3hw0CoKjOy/RSOGjOpAwgy8UQgnAc8q MT4g== X-Forwarded-Encrypted: i=1; AJvYcCXLIKq18RqHXY1EqhDAPHLdPsCx28rhGTJagqxq2y9NqboDsIxpJwSutzDijMxa7bRJH57cZm5h4g==@kvack.org X-Gm-Message-State: AOJu0Yx1JiKhgAJbHn/eTv0eYipXUu51boE6eysQ9f5N5XrSk0/wQxJK btYZwvelcrRG8EbmwQwzdGlB1DDJEcBMOkazt7dvFbJyV7WUhXCzk22idfoepqwzhsV1oHT0AFD PCjtTI8d6ugFNHZBatLCYc55JUtfb2tTY9t7EIWHbULFSFe+eRO0/ivsghD0kXZYZz7eXzqQXJh 1vnZ9PaTj0vdf/nufgYPX9dqROihJwwesAkus3AuVN/xAwRZvKBVOKpkg3EAu+ed+UUcHFgtCep QTnTIHAbGyvHjf3HfJM7APBUG11TcXpMLcRwAgFIrLnWNW63K5sWrpEI+/jM8MH9u0WeaSe7z5B vujFHk2QIknqcTi1yQxhEZTNsaBqdgQxCMalh1BbOdWQdqAOf85iIw9n X-Gm-Gg: ASbGncvchafl4hpaLEWFsNyMVuc+uMdF9I/+nD58SjEW/4pJNc8Ue6cIVqy9wzyfZTK VuawLf5v+0/bBiqDWv342Yac9VkoT31z5Dx8mo8T9SgOtyjemJhiC5qc5EqMff4v49X8ZDVfw0V Dk+rTHZsNaJmaMLfZx0KpeAymE X-Google-Smtp-Source: AGHT+IFtdbQ6U/YKuWHB7yqDwwuNE/bSc7IlcjqeG5sANxT1TCSNg1dNn8Tz99FJjQDWn5yBteVeobg3lGuJU2hNAM0= X-Received: by 2002:a17:90b:4ec6:b0:2ee:ad18:b309 with SMTP id 98e67ed59e1d1-2fce779bc1fmr18989604a91.3.1740384005725; Mon, 24 Feb 2025 00:00:05 -0800 (PST) MIME-Version: 1.0 References: <20250223235719.66576-1-raphaelsc@scylladb.com> In-Reply-To: From: "Raphael S. Carvalho" Date: Mon, 24 Feb 2025 04:59:48 -0300 X-Gm-Features: AWEUYZkvHapCZa_nWwzLdLpvhKFl_jgkyrG-YnMTBsTUmmQGjHUIcJRbVqK-hSE Message-ID: Subject: Re: [PATCH] mm: Fix error handling in __filemap_get_folio() with FGP_NOWAIT To: Matthew Wilcox Cc: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, djwong@kernel.org, Dave Chinner , hch@lst.de Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: scylladb,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: scylla,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 X-Rspam-User: X-Rspamd-Queue-Id: ED2B0C000A X-Rspamd-Server: rspam12 X-Stat-Signature: uwg9uoxxmjsm1nxk1uppuwms4g3fcw5f X-HE-Tag: 1740384007-439978 X-HE-Meta: U2FsdGVkX1/nwXMcwODHLjTccsYpDaAbcldAzn88Pk1HoapJpRffm322XJ+g76LngorVvjJo4DMaUGfHROKIPDjq7Ga9LCl7VvvvF3Wuc917xv5zRxAP3f8YgE4Q+L60qtgHEVWIavSkf5XqhNXj08pC0prfN7li1mHKQc1+/Em15db/b4Eu7bnsHtuKZpXKZqiXgfo7H6WW62TT2IYzB/2NY2JaxsgdiW0mW1S3dmHbCdsOHVq2LDYLQgyP3Hh4Wpndpqb/vozrUrew7Do0m1fZGzDgnKOq0Tiw3u8V5mhAnLMWH0KSVk9ilBbmm4ujzDBrB3384MWjRGerYSA2iCalPNVktpH5Qcs3GOq3+lrzVQUVxkXuZuTa7SKLBpLiD41uv+SOPJ6ZJGHwHswrQePYfRIDf/gHo/J5uv2HHoLXRbRDdIUuPnR5174eSEOTIZ6doKLs1hBqFaNlfXt0eTwltVrVhXQ1wQQGl2NXsWgGfsV4ypeEkGbEyVGi4AZp4sAemIOu/0dI8okw3zRt8lJnGerbJkb7Mms8cx54Y3fClHJD6L8JWlV13RYhHRLlaqJYNV8VxShRuL1dwLVI06la37jkcccXg+oYYpijAlZ2nhR4hmXWqSAFLwR0TgbaHbNakfpXfq+rkzsSqq2HHHCGaD1lup7LHgyWviDDan0aycUQ6Lr8toK4N4Qme1dSJHMnU/OSQx70o6v1JIfItSCHP+jtI4MYUigtQC4EdzasA/7ySq+2al6SW0kGL2svU5q319Iqwq09SyF86yXVctV8OUMMYpumwkob7egd2iomvtNlYxhfL5Uqme8Q0sM+pVL8Q2HICSPMGoHeU2cAJpsSHcpmY1OIZvuLEy7s1SYJVJ7RtyWvXEjSSwt82Kv+K7sQdG1nYOlqXgp7l6GcxeDcD9QCtCriSrMfRpdgUS1JdvykAurclU9FdIJ3+EaXJ0xkI8rQ/+S+dkxFnC2 YfRp7Umb DwHDwiAOD9RPJ/JzGJc0GGnSf6X+oVI0D9zX1ADKNRhe8rBDqru0x07eW9AWdn1HlWO1GeaI5uWrrUOWJKfQHa8IY8fTsj4/zP7GQgzV75q9/T7MOz5BGhRRPQM9JjQcYoM77KLrA7FWel0h3biz6KsNH3E2VzIBjGtCElIkxPzUs7beu8Neb3X+jUnrq5zzLEfe4PU5GQ5cgBpDpj1/gPfF+GuH/SOGUpUy73Y1AsZ5GvNRtIN85f7r9/46m6Op3jzYtgqzccJC2h5mTjM7B1NFZMJDVCPpo7h1eHQHyF71huMJvWCudpifVjTeEcLMHKa5FKmCVq1hAZud5PJBVKSWIecQEc5d1f2J9kig8bcfBCIA= 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 Mon, Feb 24, 2025 at 1:14=E2=80=AFAM Matthew Wilcox wrote: > > On Sun, Feb 23, 2025 at 08:57:19PM -0300, Raphael S. Carvalho wrote: > > This is likely a regression caused by 66dabbb65d67 ("mm: return an ERR_= PTR > > from __filemap_get_folio"), which performed the following changes: > > --- a/fs/iomap/buffered-io.c > > +++ b/fs/iomap/buffered-io.c > > @@ -468,19 +468,12 @@ EXPORT_SYMBOL_GPL(iomap_is_partially_uptodate= ); > > struct folio *iomap_get_folio(struct iomap_iter *iter, loff_t pos) > > { > > unsigned fgp =3D FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STA= BLE | FGP_NOFS; > > - struct folio *folio; > > > > if (iter->flags & IOMAP_NOWAIT) > > fgp |=3D FGP_NOWAIT; > > > > - folio =3D __filemap_get_folio(iter->inode->i_mapping, pos >= > PAGE_SHIFT, > > + return __filemap_get_folio(iter->inode->i_mapping, pos >> P= AGE_SHIFT, > > fgp, mapping_gfp_mask(iter->inode->i_mappin= g)); > > - if (folio) > > - return folio; > > - > > - if (iter->flags & IOMAP_NOWAIT) > > - return ERR_PTR(-EAGAIN); > > - return ERR_PTR(-ENOMEM); > > } > > We don't usually put this in the changelog ... > > > Essentially, that patch is moving error picking decision to > > __filemap_get_folio, but it missed proper FGP_NOWAIT handling, so ENOME= M > > is being escaped to user space. Had it correctly returned -EAGAIN with = NOWAIT, > > either io_uring or user space itself would be able to retry the request= . > > It's not enough to patch io_uring since the iomap interface is the one > > responsible for it, and pwritev2(RWF_NOWAIT) and AIO interfaces must re= turn > > the proper error too. > > > > The patch was tested with scylladb test suite (its original reproducer)= , and > > the tests all pass now when memory is pressured. > > > > Signed-off-by: Raphael S. Carvalho > > Instead, we add: > > Fixes: 66dabbb65d67 (mm: return an ERR_PTR from __filemap_get_folio) Thanks, will fix it in v2. > > > --- > > mm/filemap.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/mm/filemap.c b/mm/filemap.c > > index 804d7365680c..b06bd6eedaf7 100644 > > --- a/mm/filemap.c > > +++ b/mm/filemap.c > > @@ -1986,8 +1986,15 @@ struct folio *__filemap_get_folio(struct address= _space *mapping, pgoff_t index, > > > > if (err =3D=3D -EEXIST) > > goto repeat; > > - if (err) > > + if (err) { > > + /* > > + * Presumably ENOMEM, either from when allocating= or > > + * adding folio (this one for xarray node) > > + */ > > I don't like the comment. Better to do that in code: > Initially I was doing exactly what you proposed above, but after reading do_read_cache_folio() and the patch the introduces the regression, which transforms failure to get a folio (a NULL) with FGP_NOWAIT into NOAGAIN, I decided to do this, but it's indeed better to remove assumptions. Not ideal for the long run. Will change in v2. thanks.