Ping! > On Oct 31, 2018, at 4:02 PM, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > > CONFIG_JUNCTION was defined for use in Makefiles, but that does not > provide a -DCONFIG_JUNCTION on the compiler command line. Add logic > to configure.ac to get the compiler flags right. > > Now that mountd junction support is getting built, a few last minute > porting bugs popped out. Fix those up. > > Reported-by: Yongcheng Yang <yoyang@xxxxxxxxxx> > BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126 > Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ") > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > configure.ac | 8 +++++++- > utils/mountd/cache.c | 18 +++++++++--------- > 2 files changed, 16 insertions(+), 10 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 16eae06..b458891 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -185,7 +185,13 @@ AC_ARG_ENABLE(junction, > [enable support for NFS junctions @<:@default=no@:>@])], > enable_junction=$enableval, > enable_junction=no) > -AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ]) > + if test "$enable_junction" = yes; then > + AC_DEFINE(HAVE_JUNCTION_SUPPORT, 1, > + [Define this if you want junction support compiled in]) > + else > + enable_junction= > + fi > + AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ]) > > AC_ARG_ENABLE(tirpc, > [AC_HELP_STRING([--disable-tirpc], > diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c > index 6f42512..7e8d403 100644 > --- a/utils/mountd/cache.c > +++ b/utils/mountd/cache.c > @@ -976,8 +976,9 @@ lookup_export(char *dom, char *path, struct addrinfo *ai) > return found; > } > > -#ifdef CONFIG_JUNCTION > +#ifdef HAVE_JUNCTION_SUPPORT > > +#include <libxml/parser.h> > #include "junction.h" > > struct nfs_fsloc_set { > @@ -1084,8 +1085,7 @@ static bool locations_to_fslocdata(struct nfs_fsloc_set *locations, > *ttl = 0; > > for (;;) { > - enum jp_status status; > - int len; > + int len, status; > > status = get_next_location(locations, &server, > &rootpath, ttl); > @@ -1219,7 +1219,7 @@ nfs_get_basic_junction(const char *junct_path, struct nfs_fsloc_set **locset) > return EINVAL; > } > > - locset->ns_current = locset->ns_list; > + new->ns_current = new->ns_list; > new->ns_ttl = 300; > *locset = new; > return 0; > @@ -1242,7 +1242,7 @@ static struct exportent *lookup_junction(char *dom, const char *pathname, > status = nfs_get_basic_junction(pathname, &locations); > switch (status) { > xlog(L_WARNING, "Dangling junction %s: %s", > - pathname, strerro(status)); > + pathname, strerror(status)); > goto out; > } > > @@ -1252,8 +1252,8 @@ static struct exportent *lookup_junction(char *dom, const char *pathname, > > exp = locations_to_export(locations, pathname, parent); > > - nfs_free_locations(locset->ns_list); > - free(locset); > + nfs_free_locations(locations->ns_list); > + free(locations); > > out: > xmlCleanupParser(); > @@ -1273,7 +1273,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path > free(eep); > } > > -#else /* !CONFIG_JUNCTION */ > +#else /* !HAVE_JUNCTION_SUPPORT */ > > static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path, > struct addrinfo *UNUSED(ai)) > @@ -1281,7 +1281,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path > dump_to_cache(f, buf, buflen, dom, path, NULL, 0); > } > > -#endif /* !CONFIG_JUNCTION */ > +#endif /* !HAVE_JUNCTION_SUPPORT */ > > static void nfsd_export(int f) > { > -- Chuck Lever