On Sep 20, 2011, at 11:03 AM, Steve Dickson wrote: > To allow greater flexibility to where statd's state is kept, > statd's state path can now be decoupled from the normal > NFS state directory. statd has always allowed this via command line options. What the patch does is allow distributions to specify a _default_ statd state directory that is not under /var/lib/nfs, via a convenient configure option instead of by patching. This actually corrects a limitation introduced in January 2010 by me. Previously the macro definitions allowed the default to be any directory, not just under /var/lib/nfs. Introduced by commit f16fb1cd. > In configure.ac, the NSM_STATD_PATH definition will now define > the path to where the state information is kept. The default > value, /var/lib/nfs, can be redefined with the --with-statdpath > flag. > > Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> > --- > configure.ac | 9 +++++++++ > support/nsm/file.c | 7 ++----- > 2 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/configure.ac b/configure.ac > index b5934c4..7819d98 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -23,6 +23,14 @@ AC_ARG_WITH(statedir, > statedir=$withval, > statedir=/var/lib/nfs) > AC_SUBST(statedir) > +AC_ARG_WITH(statdpath, > + [AC_HELP_STRING([--with-statdpath=/foo @<:@default=/var/lib/nfs@:>@], > + [define statd's state dir as /foo instead of the NFS statedir] > + )], > + statdpath=$withval, > + statdpath=$statedir > + ) > + AC_SUBST(statdpath) Very clean! > AC_ARG_WITH(statduser, > [AC_HELP_STRING([--with-statduser=rpcuser], > [statd to run under @<:@rpcuser or nobody@:>@] > @@ -387,6 +395,7 @@ dnl ************************************************************* > dnl Export some path names to config.h > dnl ************************************************************* > AC_DEFINE_UNQUOTED(NFS_STATEDIR, "$statedir", [This defines the location of the NFS state files. Warning: this must match definitions in config.mk!]) > +AC_DEFINE_UNQUOTED(NSM_STATD_PATH, "$statdpath", [Define this if you what statd file placed in somewhere other than NFS_STATEDIR]) The help text isn't quite accurate, since $statdpath is always defined now. Something more like this: "Define this to the pathname where statd keeps its state files" > if test "x$cross_compiling" = "xno"; then > CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-"$CFLAGS"} > diff --git a/support/nsm/file.c b/support/nsm/file.c > index a12c753..d9da572 100644 > --- a/support/nsm/file.c > +++ b/support/nsm/file.c > @@ -95,12 +95,9 @@ > #define NSM_KERNEL_STATE_FILE "/proc/sys/fs/nfs/nsm_local_state" > > > - * Some distributions place statd's files in a subdirectory > + * Defines where statd's state files live. > */ > -#define NSM_PATH_EXTENSION > -/* #define NSM_PATH_EXTENSION "/statd" */ > - > -#define NSM_DEFAULT_STATEDIR NFS_STATEDIR NSM_PATH_EXTENSION > +#define NSM_DEFAULT_STATEDIR NSM_STATD_PATH IMO we don't need two macros that by definition always have the same value. That will either get fixed or tripped on eventually, so I think it should be corrected now. The cleanest approach would be to set up NSM_DEFAULT_STATEDIR in configure.ac, and drop the use of NSM_STATD_PATH. Or you can replace the use of NSM_DEFAULT_STATEDIR everywhere in support/nsm/file.c. Up to you. > static char nsm_base_dirname[PATH_MAX] = NSM_DEFAULT_STATEDIR; > > -- > 1.7.6.2 > > -- > 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 -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- 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