Message ID | cover.1705771400.git.lorenzo@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | convert write_threads, write_version and write_ports to netlink commands | expand |
On Sat, 2024-01-20 at 18:33 +0100, Lorenzo Bianconi wrote: > Introduce write_threads, write_version and write_ports netlink > commands similar to the ones available through the procfs. > > Changes since v5: > - for write_ports and write_version commands, userspace is expected to provide > a NFS listeners/supported versions list it want to enable (all the other > ports/versions will be disabled). > - fix comments > - rebase on top of nfsd-next > Changes since v4: > - rebase on top of nfsd-next tree > 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 > > Lorenzo Bianconi (3): > NFSD: convert write_threads to netlink command > NFSD: add write_version to netlink command > NFSD: add write_ports to netlink command > > Documentation/netlink/specs/nfsd.yaml | 94 ++++++ > fs/nfsd/netlink.c | 63 ++++ > fs/nfsd/netlink.h | 10 + > fs/nfsd/nfsctl.c | 396 ++++++++++++++++++++++ > include/uapi/linux/nfsd_netlink.h | 44 +++ > tools/net/ynl/generated/nfsd-user.c | 460 ++++++++++++++++++++++++++ > tools/net/ynl/generated/nfsd-user.h | 155 +++++++++ > 7 files changed, 1222 insertions(+) > I think this is really close and coming together! Before we merge this though, I'd _really_ like to see some patches for rpc.nfsd in nfs-utils. Until we try to implement the userland bits, we won't know if we've gotten this interface right. ...and before that, we really need to have some sort of userland program packaged and available for querying the new netlink RPC stats from nfsd. You have the simple userland one on github, but I think we need omething packaged, ideally as part of nfs-utils. Doing that first would allow you to add the necessary autoconf/libtool stuff to pull in the netlink libraries, which will be a prerequisite for doing the userland rpc.nfsd work, and will probably be a bit simpler than modifying rpc.nfsd.
> On Sat, 2024-01-20 at 18:33 +0100, Lorenzo Bianconi wrote: > > Introduce write_threads, write_version and write_ports netlink > > commands similar to the ones available through the procfs. > > > > Changes since v5: > > - for write_ports and write_version commands, userspace is expected to provide > > a NFS listeners/supported versions list it want to enable (all the other > > ports/versions will be disabled). > > - fix comments > > - rebase on top of nfsd-next > > Changes since v4: > > - rebase on top of nfsd-next tree > > 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 > > > > Lorenzo Bianconi (3): > > NFSD: convert write_threads to netlink command > > NFSD: add write_version to netlink command > > NFSD: add write_ports to netlink command > > > > Documentation/netlink/specs/nfsd.yaml | 94 ++++++ > > fs/nfsd/netlink.c | 63 ++++ > > fs/nfsd/netlink.h | 10 + > > fs/nfsd/nfsctl.c | 396 ++++++++++++++++++++++ > > include/uapi/linux/nfsd_netlink.h | 44 +++ > > tools/net/ynl/generated/nfsd-user.c | 460 ++++++++++++++++++++++++++ > > tools/net/ynl/generated/nfsd-user.h | 155 +++++++++ > > 7 files changed, 1222 insertions(+) > > > > > I think this is really close and coming together! Before we merge this > though, I'd _really_ like to see some patches for rpc.nfsd in nfs-utils. > Until we try to implement the userland bits, we won't know if we've > gotten this interface right. > > ...and before that, we really need to have some sort of userland program > packaged and available for querying the new netlink RPC stats from nfsd. > You have the simple userland one on github, but I think we need omething > packaged, ideally as part of nfs-utils. Hi Jeff, I guess we can experiment on the new APIs very easily with ynl cli.py. Something like: $ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/nfsd.yaml --dump rpc-status-get [{'compound-ops': [53, 22, 9], 'daddr4': 3232266828, 'dport': 2049, 'flags': 5, 'proc': 1, 'prog': 100003, 'saddr4': 3232266753, 'service_time': 81705129, 'sport': 908, 'version': 4, 'xid': 0}, {'compound-ops': [53, 22, 9], 'daddr4': 3232266828, 'dport': 2049, 'flags': 5, 'proc': 1, 'prog': 100003, 'saddr4': 3232266753, 'service_time': 81700496, 'sport': 908, 'version': 4, 'xid': 0}] or ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/nfsd.yaml --do threads-get {'threads': 8} (the only required package is jsonschema iirc). Regards, Lorenzo > > Doing that first would allow you to add the necessary autoconf/libtool > stuff to pull in the netlink libraries, which will be a prerequisite for > doing the userland rpc.nfsd work, and will probably be a bit simpler > than modifying rpc.nfsd. > -- > Jeff Layton <jlayton@kernel.org>