[PATCH 00/26] Basic IPv6 support in statd (take++)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I think I've addressed the three major concerns expressed during the
last round of review.

a) The on-disk format (files and directories under /var/lib/nfs) is
   unchanged.

b) IPv6 support is implemented as a series of incremental changes to
   the current statd implementation, not as a full replacement with
   a fresh implementation.  The series can be broken up into chunks
   of 4 or 5 patches and applied over time across nfs-utils releases
   (although it need not be).

c) New features, such as support for sending SM_NOTIFY over TCP and
   support for handling downcalls on IPv6 transports, has been
   removed for now.  No additional support for handling multi-homed
   hosts is introduced.  No additional support for distinguishing
   between client and server peers is introduced.

There remains some clean up that has been discussed previously on this
mailing list.  The on-disk monitor records are now managed in code
that sm-notify and statd share, replacing two separate but equal
implementations.  Additionally, common RPC code is now used to manage
both NLM downcalls and sending SM_NOTIFY requests; again, replacing
separate but similar implementations.

Jeff and I have been testing this code, and it appears to work at
least as well as the IPv4-only version, plus providing support for
monitoring IPv6 hosts.  It is designed to build and work properly with
TI-RPC and without.

I'm expecting to see some additional minor refinements and clean ups
to these patches over the next couple of weeks.  Right now, I would
like some feedback about the architecture of this proposed change.  Is
this overall design acceptable?  Are there parts that are crazy or
unclear that could be improved or better documented?  Outright bugs,
omissions, or oversights?  Do the layering and library APIs make
sense?  Any new security exposures?

I'm cooking up a few additional minor changes, so I'm holding back on
presenting the man page refreshes.  Other than allowing network
addresses specified on the command line to be IPv6 addresses, the
command line synopses for both programs are not changed by this work.

---

Chuck Lever (26):
      statd: Support TI-RPC statd listener
      statd: retain CAP_NET_BIND when dropping privileges
      statd: Support IPv6 in sm_stat_1_svc()
      statd: Support IPv6 in sm_mon_1_svc()
      statd: Support IPv6 in sm_simu_crash_1_svc
      statd: Support IPv6 is caller_is_localhost()
      statd: add IPv6 support in sm_notify_1_svc()
      libnsm.a: add nsm_present_address() API
      statd: Introduce statd version of matchhostname()
      statd: squelch compiler warning in sm-notify.c
      statd: Support IPv6 DNS lookups in smn_lookup
      statd: Use getaddrinfo(3) to generate bind address in smn_create_socket()
      statd: IPv6 support in reserved port binding in smn_create_socket()
      statd: Support creating a PF_INET6 socket in smn_create_socket()
      statd: factor socket creation out of notify()
      statd: Update rmtcall.c
      statd: Support sending SM_NOTIFY requests to IPv6 remotes
      libnsm: Add RPC construction helper functions
      statd: Use the new nsm_ file.c calls in rpc.statd
      statd: Use the new nsm_ file.c calls in sm_notify
      statd: Introduce common routines to handle persistent storage
      statd: Move the sm_inter XDR pieces to libnsm.a
      statd: fix address copy in sm-notify.c
      statd: replace smn_{get,set}_port() with the shared equivalents
      statd: Replace nsm_log() with xlog() in sm-notify command
      statd: Replace note() with xlog() in rpc.statd


 .gitignore                   |    9 
 aclocal/libcap.m4            |   15 +
 configure.ac                 |    4 
 support/Makefile.am          |    2 
 support/include/Makefile.am  |    1 
 support/include/ha-callout.h |    4 
 support/include/nsm.h        |   87 ++++
 support/include/rpcmisc.h    |    5 
 support/nfs/Makefile.am      |    3 
 support/nfs/svc_create.c     |  213 +++++++++++
 support/nsm/Makefile.am      |   45 ++
 support/nsm/file.c           |  816 ++++++++++++++++++++++++++++++++++++++++++
 support/nsm/rpc.c            |  505 ++++++++++++++++++++++++++
 support/nsm/sm_inter.x       |  131 +++++++
 utils/statd/Makefile.am      |   22 -
 utils/statd/callback.c       |   76 +++-
 utils/statd/hostname.c       |  268 ++++++++++++++
 utils/statd/log.c            |   95 -----
 utils/statd/log.h            |   42 --
 utils/statd/misc.c           |   30 --
 utils/statd/monitor.c        |  237 +++++-------
 utils/statd/notlist.c        |    4 
 utils/statd/rmtcall.c        |  165 ++------
 utils/statd/simu.c           |   37 +-
 utils/statd/simulate.c       |   52 +--
 utils/statd/sm-notify.c      |  773 ++++++++++++++++------------------------
 utils/statd/sm-notify.man    |    6 
 utils/statd/sm_inter.x       |  131 -------
 utils/statd/stat.c           |   14 -
 utils/statd/statd.c          |  199 +++-------
 utils/statd/statd.h          |   38 --
 utils/statd/svc_run.c        |    7 
 utils/statd/version.h        |    7 
 33 files changed, 2747 insertions(+), 1296 deletions(-)
 create mode 100644 aclocal/libcap.m4
 create mode 100644 support/include/nsm.h
 create mode 100644 support/nfs/svc_create.c
 create mode 100644 support/nsm/Makefile.am
 create mode 100644 support/nsm/file.c
 create mode 100644 support/nsm/rpc.c
 create mode 100644 support/nsm/sm_inter.x
 create mode 100644 utils/statd/hostname.c
 delete mode 100644 utils/statd/log.c
 delete mode 100644 utils/statd/log.h
 delete mode 100644 utils/statd/sm_inter.x
 delete mode 100644 utils/statd/version.h

-- 
Chuck Lever <chuck.lever@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux