Linux NFS development
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: NeilBrown <neilb@suse.de>
Cc: Lorenzo Bianconi <lorenzo@kernel.org>,
	linux-nfs@vger.kernel.org,  lorenzo.bianconi@redhat.com,
	chuck.lever@oracle.com, netdev@vger.kernel.org,  kuba@kernel.org
Subject: Re: [PATCH v4 0/3] convert write_threads, write_version and write_ports to netlink commands
Date: Mon, 27 Nov 2023 07:35:34 -0500	[thread overview]
Message-ID: <06427133d603e3ff521bcd1c3d0d3ba777848606.camel@kernel.org> (raw)
In-Reply-To: <169982054606.2582.2797096885323571291@noble.neil.brown.name>

On Mon, 2023-11-13 at 07:22 +1100, NeilBrown wrote:
> On Sun, 12 Nov 2023, Jeff Layton wrote:
> > On Sun, 2023-11-12 at 11:02 +0100, Lorenzo Bianconi wrote:
> > > > On Sat, 2023-11-04 at 12:13 +0100, Lorenzo Bianconi wrote:
> > > > > Introduce write_threads, write_version and write_ports netlink
> > > > > commands similar to the ones available through the procfs.
> > > > > 
> > > > > Changes since v3:
> > > > > - drop write_maxconn and write_maxblksize for the moment
> > > > > - add write_version and write_ports commands
> > > > > Changes since v2:
> > > > > - use u32 to store nthreads in nfsd_nl_threads_set_doit
> > > > > - rename server-attr in control-plane in nfsd.yaml specs
> > > > > Changes since v1:
> > > > > - remove write_v4_end_grace command
> > > > > - add write_maxblksize and write_maxconn netlink commands
> > > > > 
> > > > > This patch can be tested with user-space tool reported below:
> > > > > https://github.com/LorenzoBianconi/nfsd-netlink.git
> > > > > This series is based on the commit below available in net-next tree
> > > > > 
> > > > > commit e0fadcffdd172d3a762cb3d0e2e185b8198532d9
> > > > > Author: Jakub Kicinski <kuba@kernel.org>
> > > > > Date:   Fri Oct 6 06:50:32 2023 -0700
> > > > > 
> > > > >     tools: ynl-gen: handle do ops with no input attrs
> > > > > 
> > > > >     The code supports dumps with no input attributes currently
> > > > >     thru a combination of special-casing and luck.
> > > > >     Clean up the handling of ops with no inputs. Create empty
> > > > >     Structs, and skip printing of empty types.
> > > > >     This makes dos with no inputs work.
> > > > > 
> > > > > Lorenzo Bianconi (3):
> > > > >   NFSD: convert write_threads to netlink commands
> > > > >   NFSD: convert write_version to netlink commands
> > > > >   NFSD: convert write_ports to netlink commands
> > > > > 
> > > > >  Documentation/netlink/specs/nfsd.yaml |  83 ++++++++
> > > > >  fs/nfsd/netlink.c                     |  54 ++++++
> > > > >  fs/nfsd/netlink.h                     |   8 +
> > > > >  fs/nfsd/nfsctl.c                      | 267 +++++++++++++++++++++++++-
> > > > >  include/uapi/linux/nfsd_netlink.h     |  30 +++
> > > > >  tools/net/ynl/generated/nfsd-user.c   | 254 ++++++++++++++++++++++++
> > > > >  tools/net/ynl/generated/nfsd-user.h   | 156 +++++++++++++++
> > > > >  7 files changed, 845 insertions(+), 7 deletions(-)
> > > > > 
> > > > 
> > > > Nice work, Lorenzo! Now comes the bikeshedding...
> > > 
> > > Hi Jeff,
> > > 
> > > > 
> > > > With the nfsdfs interface, we sort of had to split things up into
> > > > multiple files like this, but it has some drawbacks, in particular with
> > > > weird behavior when people do things out of order.
> > > 
> > > what do you mean with 'weird behavior'? Something not expected?
> > > 
> > 
> > Yeah.
> > 
> > For instance, if you set up sockets but never write anything to the
> > "threads" file, those sockets will sit around in perpetuity. Granted
> > most people use rpc.nfsd to start the server, so this generally doesn't
> > happen often, but it's always been a klunky interface regardless.
> 
> If you set up sockets but *do* write something to the "threads" file,
> then those sockets will *still* sit around in perpetuity.
> i.e. until you shut down the NFS server (rpc.nfsd 0).
> 
> I don't really see the problem.
> 
> It is true that you can use use the interface to ask for meaningless
> things.  The maxim that applies is "If you make it fool-proof, only a
> fool will use it". :-)
> 
> I'm not against exploring changes to the interface style in conjunction
> with moving from nfsd-fs to netlink, but I would want a bit more
> justification for any change.
> 
> 

Mostly my justification is that that occasionally we do add new settings
for nfsd, and having a single extensible command may make that simpler
to deal with.

> > 
> > > > 
> > > > Would it make more sense to instead have a single netlink command that
> > > > sets up ports and versions, and then spawns the requisite amount of
> > > > threads, all in one fell swoop?
> > > 
> > > I do not have a strong opinion about it but I would say having a dedicated
> > > set/get for each paramater allow us to have more granularity (e.g. if you want
> > > to change just a parameter we do not need to send all of them to the kernel).
> > > What do you think?
> > > 
> > 
> > It's pretty rare to need to twiddle settings on the server while it's up
> > and running. Restarting the server in the face of even minor changes is
> > not generally a huge problem, so I don't see this as necessary.
> 
> Restarting the server is not zero-cost.  It restarts the grace period.
> So I would rather not require it for minor changes.
> 
> 

That is a good point. That said, we wouldn't necessarily need to require
restarting the server on a reconfigure. Some settings could be changed
without a server restart.

In any case, I'll withdraw my objection and we can do this with multiple
commands for now. We can always add a single command later, and just fix
up rpc.nfsd to hide all of the details of the different interfaces at
that time if we think it's helpful.

Cheers,
--
Jeff Layton <jlayton@kernel.org>

      reply	other threads:[~2023-11-27 12:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-04 11:13 [PATCH v4 0/3] convert write_threads, write_version and write_ports to netlink commands Lorenzo Bianconi
2023-11-04 11:13 ` [PATCH v4 1/3] NFSD: convert write_threads to netlink command Lorenzo Bianconi
2023-11-11 18:57   ` Chuck Lever
2023-11-12  9:43     ` Lorenzo Bianconi
2023-11-04 11:13 ` [PATCH v4 2/3] NFSD: convert write_version " Lorenzo Bianconi
2023-11-04 16:01   ` kernel test robot
2023-11-04 11:13 ` [PATCH v4 3/3] NFSD: convert write_ports " Lorenzo Bianconi
2023-11-04 20:56   ` kernel test robot
2023-11-11 19:52 ` [PATCH v4 0/3] convert write_threads, write_version and write_ports to netlink commands Jeff Layton
2023-11-12 10:02   ` Lorenzo Bianconi
2023-11-12 11:09     ` Jeff Layton
2023-11-12 15:33       ` Chuck Lever III
2023-11-12 20:22       ` NeilBrown
2023-11-27 12:35         ` Jeff Layton [this message]

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=06427133d603e3ff521bcd1c3d0d3ba777848606.camel@kernel.org \
    --to=jlayton@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=kuba@kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=lorenzo@kernel.org \
    --cc=neilb@suse.de \
    --cc=netdev@vger.kernel.org \
    /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