On Tue, Mar 02, 2021 at 05:33:23PM -0500, Steve Dickson wrote: > > > On 2/24/21 3:30 PM, J. Bruce Fields wrote: > > On Fri, Feb 19, 2021 at 03:08:08PM -0500, Steve Dickson wrote: > >> nfsv4.exportd is a daemon that will listen for only v4 mount upcalls. > >> The idea is to allow distros to build a v4 only package > >> which will have a much smaller footprint than the > >> entire nfs-utils package. > >> > >> exportd uses no RPC code, which means none of the > >> code or arguments that deal with v3 was ported, > >> this again, makes the footprint much smaller. > > > > How much smaller? > Will a bit smaller... but a number of daemons like nfsd[cld,clddb,cldnts] > need to also come a long. Could we get some numbers? Looks like nfs-utils in F33 is about 1.2M: $ rpm -qi nfs-utils|grep ^Size Size : 1243512 $ strip utils/mountd/mountd $ ls -lh utils/mountd/mountd -rwxrwxr-x. 1 bfields bfields 128K Mar 3 10:12 utils/mountd/mountd $ strip utils/exportd/exportd $ ls -lh utils/exportd/exportd -rwxrwxr-x. 1 bfields bfields 106K Mar 3 10:12 utils/exportd/exportd So replacing mountd by exportd saves us about 20K out of 1.2M. Is it worth it? > >> The following options were ported: > >> * multiple threads > >> * state-directory-path option > >> * junction support (not tested) > >> > >> The rest of the mountd options were v3 only options. > > > > There's also --manage-gids. > Right... a patch was posted... > > > > > If you want nfsv4-only at runtime, you can always run rpc.mountd with > > -N2 -N3 to turn off the MOUNT protocol support. > The end game is not to run mountd at all... > > > > > If you don't even want v2/f3 code on your system, then you may have to > > do something like this, but why is that important? > Container friendly... Not bring in all the extra daemons v3 > needs is a good thing... esp rpcbind. Looking at the output of $ for f in $(rpm -ql nfs-utils); do if [ -f $f ]; then ls -ls $f; fi; done|sort -n It looks like removing statd, sm-notify, showount and their man pages would free about another 170K. I think that's about how much we'd save by seperating out a separate documentation package. I don't know, what sort of gains are container folks asking for? --b. > > steved. > > > > > --b. > > > >> > >> V2: > >> * Added two systemd services: nfsv4-exportd and nfsv4-server > >> * nfsv4-server starts rpc.nfsd -N 3, so nfs.conf mod not needed. > >> > >> V3: Changed the name from exportd to nfsv4.exportd > >> > >> V4: Added compile flag that will compile in the NFSv4 only server > >> > >> Steve Dickson (7): > >> exportd: the initial shell of the v4 export support > >> exportd: Moved cache upcalls routines into libexport.a > >> exportd: multiple threads > >> exportd/exportfs: Add the state-directory-path option > >> exportd: Enabled junction support > >> exportd: systemd unit files > >> exportd: Added config variable to compile in the NFSv4 only server. > >> > >> .gitignore | 1 + > >> configure.ac | 14 ++ > >> nfs.conf | 4 + > >> support/export/Makefile.am | 3 +- > >> {utils/mountd => support/export}/auth.c | 4 +- > >> {utils/mountd => support/export}/cache.c | 46 +++- > >> support/export/export.h | 34 +++ > >> {utils/mountd => support/export}/fsloc.c | 0 > >> {utils/mountd => support/export}/v4root.c | 0 > >> {utils/mountd => support/include}/fsloc.h | 0 > >> systemd/Makefile.am | 6 + > >> systemd/nfs.conf.man | 10 + > >> systemd/nfsv4-exportd.service | 12 + > >> systemd/nfsv4-server.service | 31 +++ > >> utils/Makefile.am | 4 + > >> utils/exportd/Makefile.am | 65 +++++ > >> utils/exportd/exportd.c | 276 ++++++++++++++++++++++ > >> utils/exportd/exportd.man | 81 +++++++ > >> utils/exportfs/exportfs.c | 21 +- > >> utils/exportfs/exportfs.man | 7 +- > >> utils/mountd/Makefile.am | 5 +- > >> 21 files changed, 606 insertions(+), 18 deletions(-) > >> rename {utils/mountd => support/export}/auth.c (99%) > >> rename {utils/mountd => support/export}/cache.c (98%) > >> create mode 100644 support/export/export.h > >> rename {utils/mountd => support/export}/fsloc.c (100%) > >> rename {utils/mountd => support/export}/v4root.c (100%) > >> rename {utils/mountd => support/include}/fsloc.h (100%) > >> create mode 100644 systemd/nfsv4-exportd.service > >> create mode 100644 systemd/nfsv4-server.service > >> create mode 100644 utils/exportd/Makefile.am > >> create mode 100644 utils/exportd/exportd.c > >> create mode 100644 utils/exportd/exportd.man > >> > >> -- > >> 2.29.2 > >