public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: NeilBrown <neil@brown.name>, Mike Snitzer <snitzer@kernel.org>
Cc: Anna Schumaker <anna@kernel.org>,
	Trond Myklebust <trondmy@hammerspace.com>,
	 Chuck Lever <chuck.lever@oracle.com>,
	linux-nfs@vger.kernel.org
Subject: Re: [for-6.16-final PATCH 9/9] nfs/localio: add localio_async_probe modparm
Date: Mon, 14 Jul 2025 08:28:22 -0400	[thread overview]
Message-ID: <579139f6eaaf3f807991e041f509db14d2ffc721.camel@kernel.org> (raw)
In-Reply-To: <175246700631.2234665.18042187680516755344@noble.neil.brown.name>

On Mon, 2025-07-14 at 14:23 +1000, NeilBrown wrote:
> On Mon, 14 Jul 2025, Mike Snitzer wrote:
> > From: Mike Snitzer <snitzer@hammerspace.com>
> > 
> > This knob influences the LOCALIO handshake so that it happens
> > synchronously upon NFS client creation.. which reduces the window of
> > opportunity for a bunch of IO to flood page cache and send out over to
> > NFSD before LOCALIO handshake negotiates that the client and server
> > are local.  The knob is:
> >   echo N > /sys/module/nfs/parameters/localio_async_probe
> 
> I understand why you are adding this but ....  yuck.  Tuning knobs are
> best avoided.
> 
> Maybe we could still do the probe async, but in mount wait for 200ms,
> or for the probe to get a reply.   That should make everyone happy.
> 
> NeilBrown
> 

Agreed. I'd prefer to not need a tuning knob for this. Doing a short
wait in the mount for localio negotiation would be a lot more
reasonable.

That said, why is the LOCALIO negotiation taking so long? Shouldn't
that be basically instantaneous during the mount? Do we really have
applications that are hammering reads and writes just after the mount
returns but before the localio negotiation completes?

> 
> > 
> > Fixes: 1ff4716f420b ("NFS: always probe for LOCALIO support asynchronously")
> > Signed-off-by: Mike Snitzer <snitzer@hammerspace.com>
> > ---
> >  fs/nfs/localio.c | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> > 
> > diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c
> > index e3ae003118cb..76ca9bd21d2e 100644
> > --- a/fs/nfs/localio.c
> > +++ b/fs/nfs/localio.c
> > @@ -49,6 +49,11 @@ struct nfs_local_fsync_ctx {
> >  static bool localio_enabled __read_mostly = true;
> >  module_param(localio_enabled, bool, 0644);
> >  
> > +static bool localio_async_probe __read_mostly = true;
> > +module_param(localio_async_probe, bool, 0644);
> > +MODULE_PARM_DESC(localio_async_probe,
> > +		 "Probe for LOCALIO support asynchronously.");
> > +
> >  static bool localio_O_DIRECT_semantics __read_mostly = false;
> >  module_param(localio_O_DIRECT_semantics, bool, 0644);
> >  MODULE_PARM_DESC(localio_O_DIRECT_semantics,
> > @@ -203,7 +208,10 @@ void nfs_local_probe_async_work(struct work_struct *work)
> >  
> >  void nfs_local_probe_async(struct nfs_client *clp)
> >  {
> > -	queue_work(nfsiod_workqueue, &clp->cl_local_probe_work);
> > +	if (likely(localio_async_probe))
> > +		queue_work(nfsiod_workqueue, &clp->cl_local_probe_work);
> > +	else
> > +		nfs_local_probe(clp);
> >  }
> >  EXPORT_SYMBOL_GPL(nfs_local_probe_async);
> >  
> > -- 
> > 2.44.0
> > 
> > 

-- 
Jeff Layton <jlayton@kernel.org>

  reply	other threads:[~2025-07-14 12:28 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-09  0:46 [PATCH 0/6 v2] nfs_localio: fixes for races and errors from older compilers NeilBrown
2025-05-09  0:46 ` [PATCH 1/6] nfs_localio: use cmpxchg() to install new nfs_file_localio NeilBrown
2025-05-09  0:46 ` [PATCH 2/6] nfs_localio: always hold nfsd net ref with nfsd_file ref NeilBrown
2025-05-09  0:46 ` [PATCH 3/6] nfs_localio: simplify interface to nfsd for getting nfsd_file NeilBrown
2025-05-09  0:46 ` [PATCH 4/6] nfs_localio: duplicate nfs_close_local_fh() NeilBrown
2025-05-09  0:46 ` [PATCH 5/6] nfs_localio: protect race between nfs_uuid_put() and nfs_close_local_fh() NeilBrown
2025-05-09  0:46 ` [PATCH 6/6] nfs_localio: change nfsd_file_put_local() to take a pointer to __rcu pointer NeilBrown
2025-05-09 11:03   ` kernel test robot
2025-07-08 14:20   ` [RFC PATCH for 6.16-rcX] Revert "nfs_localio: change nfsd_file_put_local() to take a pointer to __rcu pointer" Mike Snitzer
2025-07-14  3:13     ` [for-6.16-final PATCH 0/9] NFSD/NFS/LOCALIO: stable fixes and revert 6.16 LOCALIO changes Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 1/9] Revert "NFSD: Clean up kdoc for nfsd_open_local_fh()" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 2/9] Revert "nfs_localio: change nfsd_file_put_local() to take a pointer to __rcu pointer" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 3/9] Revert "nfs_localio: protect race between nfs_uuid_put() and nfs_close_local_fh()" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 4/9] Revert "nfs_localio: duplicate nfs_close_local_fh()" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 5/9] Revert "nfs_localio: simplify interface to nfsd for getting nfsd_file" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 6/9] Revert "nfs_localio: always hold nfsd net ref with nfsd_file ref" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 7/9] Revert "nfs_localio: use cmpxchg() to install new nfs_file_localio" Mike Snitzer
2025-07-14  3:13       ` [for-6.16-final PATCH 8/9] nfs/localio: avoid bouncing LOCALIO if nfs_client_is_local() Mike Snitzer
2025-07-14  4:19         ` NeilBrown
2025-07-14 14:37           ` Mike Snitzer
2025-07-14 12:23         ` Jeff Layton
2025-07-14  3:13       ` [for-6.16-final PATCH 9/9] nfs/localio: add localio_async_probe modparm Mike Snitzer
2025-07-14  4:23         ` NeilBrown
2025-07-14 12:28           ` Jeff Layton [this message]
2025-07-14 14:08             ` Mike Snitzer
2025-07-14  3:50     ` [RFC PATCH for 6.16-rcX] Revert "nfs_localio: change nfsd_file_put_local() to take a pointer to __rcu pointer" NeilBrown
2025-07-14 14:45       ` Mike Snitzer
2025-07-15 22:52     ` [PATCH 0/3] Fix localio hangs Trond Myklebust
2025-07-15 22:52       ` [PATCH 1/3] NFS/localio: nfs_close_local_fh() fix check for file closed Trond Myklebust
2025-07-15 22:52       ` [PATCH 2/3] NFS/localio: nfs_uuid_put() fix the wait for file unlink events Trond Myklebust
2025-07-15 22:52       ` [PATCH 3/3] NFS/localio: nfs_uuid_put() fix the wake up after unlinking the file Trond Myklebust
2025-07-16  1:09       ` [PATCH 1/3] NFS/localio: nfs_close_local_fh() fix check for file closed NeilBrown
2025-07-16  1:22       ` [PATCH 2/3] NFS/localio: nfs_uuid_put() fix the wait for file unlink events NeilBrown
2025-07-16  2:29         ` Trond Myklebust
2025-07-16  3:51           ` NeilBrown
2025-07-16  1:31       ` [PATCH 3/3] NFS/localio: nfs_uuid_put() fix the wake up after unlinking the file NeilBrown
2025-07-16  4:17         ` Trond Myklebust
2025-07-16  5:07           ` NeilBrown
2025-07-16 15:19             ` Trond Myklebust
2025-07-16 15:59       ` [PATCH v2 0/3] Fix localio hangs Trond Myklebust
2025-07-16 15:59         ` [PATCH v2 1/3] NFS/localio: nfs_close_local_fh() fix check for file closed Trond Myklebust
2025-07-16 15:59         ` [PATCH v2 2/3] NFS/localio: nfs_uuid_put() fix races with nfs_open/close_local_fh() Trond Myklebust
2025-07-16 15:59         ` [PATCH v2 3/3] NFS/localio: nfs_uuid_put() fix the wake up after unlinking the file Trond Myklebust
2025-07-16 22:09         ` [PATCH v2 0/3] Fix localio hangs NeilBrown
2025-07-16 23:27           ` Mike Snitzer
2025-07-18  0:18             ` NeilBrown
2025-05-09 16:01 ` [PATCH 0/6 v2] nfs_localio: fixes for races and errors from older compilers Chuck Lever
2025-05-09 21:02   ` Mike Snitzer
2025-05-10  0:16     ` Paul E. McKenney
2025-05-10  2:44       ` NeilBrown
2025-05-10  3:01   ` NeilBrown
2025-05-10 16:02     ` Chuck Lever
2025-05-10 19:57       ` Mike Snitzer
2025-05-16 15:33         ` Chuck Lever
2025-05-18 10:46           ` Pali Rohár
2025-05-19  3:49         ` NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=579139f6eaaf3f807991e041f509db14d2ffc721.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=anna@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neil@brown.name \
    --cc=snitzer@kernel.org \
    --cc=trondmy@hammerspace.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox