2018-10-31 20:02:23

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH v1 1/3] Fix quoting in configure.ac

Replace an unmatched single quote to help syntax coloring editors.

Signed-off-by: Chuck Lever <[email protected]>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index cf1c4b9..16eae06 100644
--- a/configure.ac
+++ b/configure.ac
@@ -165,7 +165,7 @@ AC_ARG_ENABLE(uuid,
choose_blkid=default)
AC_ARG_ENABLE(mount,
[AC_HELP_STRING([--disable-mount],
- [Don't build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
+ [Do not build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
enable_mount=$enableval,
enable_mount=yes)
AM_CONDITIONAL(CONFIG_MOUNT, [test "$enable_mount" = "yes"])



2018-10-31 20:02:27

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH v1 2/3] Harden configure.ac checks for libxml2

Modernize the libxml2 script to use PKG_PROG_PKG_CONFIG instead of
an ad hoc macro. This automates the population of AM_CPPFLAGS with
"-I/usr/include/libxml2" when it is needed.

Signed-off-by: Chuck Lever <[email protected]>
---
aclocal/libxml2.m4 | 20 +++++++++++---------
support/junction/Makefile.am | 2 --
2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/aclocal/libxml2.m4 b/aclocal/libxml2.m4
index 5c399b2..8231553 100644
--- a/aclocal/libxml2.m4
+++ b/aclocal/libxml2.m4
@@ -1,15 +1,17 @@
dnl Checks for libxml2.so
AC_DEFUN([AC_LIBXML2], [

- if test "$enable_junction" = yes; then
+ PKG_PROG_PKG_CONFIG([0.9.0])
+ AS_IF(
+ [test "$enable_junction" = "yes"],
+ [PKG_CHECK_MODULES([XML2], [libxml-2.0 >= 2.4],
+ [LIBXML2="${XML2_LIBS}"
+ AM_CPPFLAGS="${AM_CPPFLAGS} ${XML2_CFLAGS}"
+ AC_DEFINE([HAVE_LIBXML2], [1],
+ [Define to 1 if you have and wish to use libxml2.])],
+ [AC_MSG_ERROR([libxml2 not found.])])])

- dnl look for the library; do not add to LIBS if found
- AC_CHECK_LIB([xml2], [xmlParseFile], [LIBXML2=-lxml2],
- [AC_MSG_ERROR([libxml2 not found.])])
- AC_SUBST(LIBXML2)
-
- dnl XXX should also check for presence of xml headers
-
- fi
+ AC_SUBST([AM_CPPFLAGS])
+ AC_SUBST(LIBXML2)

])dnl
diff --git a/support/junction/Makefile.am b/support/junction/Makefile.am
index 97e7426..be6958b 100644
--- a/support/junction/Makefile.am
+++ b/support/junction/Makefile.am
@@ -30,5 +30,3 @@ libjunction_la_SOURCES = display.c export-cache.c junction.c \
locations.c nfs.c path.c xml.c

MAINTAINERCLEANFILES = Makefile.in
-
-AM_CPPFLAGS = -I. -I../include -I/usr/include/libxml2


2018-10-31 20:02:32

by Chuck Lever III

[permalink] [raw]
Subject: [PATCH v1 3/3] Finish port of junction support to nfs-utils

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 <[email protected]>
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
Signed-off-by: Chuck Lever <[email protected]>
---
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)
{


2018-11-27 16:45:54

by Chuck Lever III

[permalink] [raw]
Subject: Re: [PATCH v1 3/3] Finish port of junction support to nfs-utils

Ping!


> On Oct 31, 2018, at 4:02 PM, Chuck Lever <[email protected]> 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 <[email protected]>
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
> Signed-off-by: Chuck Lever <[email protected]>
> ---
> 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




2018-11-28 21:00:16

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH v1 3/3] Finish port of junction support to nfs-utils



On 11/27/18 11:45 AM, Chuck Lever wrote:
> Ping!
My apologies for taking so long to get to this...
I took an extended Thanksgiving then completely
for got about it... Thanks for the ping... but :-)

When I enable junctions via --enable-junction I get the
following compile error with or w/out these patches

gcc -DHAVE_CONFIG_H -I. -I../../support/include -I. -I../../support/include -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
In file included from lookup.c:31:
../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
#include <rpc/rpc.h>
^~~~~~~~~~~
I know how to fix it... Add the following to CFLAGS and LDFLAGS
`pkg-config --cflags libtirpc`
`pkg-config --libs libtirpc`

First I'm wonder how you got things to compile w/out making these changes
and secondly I'm wondering where we should make these changes...

Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
flags in aclocal/libtirpc.m4?

steved.

>
>
>> On Oct 31, 2018, at 4:02 PM, Chuck Lever <[email protected]> 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 <[email protected]>
>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
>> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
>> Signed-off-by: Chuck Lever <[email protected]>
>> ---
>> 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
>
>
>

2018-11-28 21:05:08

by Chuck Lever III

[permalink] [raw]
Subject: Re: [PATCH v1 3/3] Finish port of junction support to nfs-utils



> On Nov 28, 2018, at 4:00 PM, Steve Dickson <[email protected]> wrote:
>
>
>
> On 11/27/18 11:45 AM, Chuck Lever wrote:
>> Ping!
> My apologies for taking so long to get to this...
> I took an extended Thanksgiving then completely
> for got about it... Thanks for the ping... but :-)
>
> When I enable junctions via --enable-junction I get the
> following compile error with or w/out these patches
>
> gcc -DHAVE_CONFIG_H -I. -I../../support/include -I. -I../../support/include -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
> In file included from lookup.c:31:
> ../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
> #include <rpc/rpc.h>
> ^~~~~~~~~~~
> I know how to fix it... Add the following to CFLAGS and LDFLAGS
> `pkg-config --cflags libtirpc`
> `pkg-config --libs libtirpc`
>
> First I'm wonder how you got things to compile w/out making these changes

Well I built and tested this on RHEL 7. If you're testing on
late-model Fedora, you're probably getting a slightly different
build configuration. Just a guess.


> and secondly I'm wondering where we should make these changes...
>
> Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
> flags in aclocal/libtirpc.m4?

libtirpc.m4 seems like the right place, but hard-coding seems
like a sledgehammer. Maybe have a look at the changes I made
to libxml2.m4 and do something similar?


> steved.
>
>>
>>
>>> On Oct 31, 2018, at 4:02 PM, Chuck Lever <[email protected]> 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 <[email protected]>
>>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
>>> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
>>> Signed-off-by: Chuck Lever <[email protected]>
>>> ---
>>> 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
>>
>>
>>

--
Chuck Lever




2018-11-29 18:37:10

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH v1 3/3] Finish port of junction support to nfs-utils



On 11/28/18 4:05 PM, Chuck Lever wrote:
>
>
>> On Nov 28, 2018, at 4:00 PM, Steve Dickson <[email protected]> wrote:
>>
>>
>>
>> On 11/27/18 11:45 AM, Chuck Lever wrote:
>>> Ping!
>> My apologies for taking so long to get to this...
>> I took an extended Thanksgiving then completely
>> for got about it... Thanks for the ping... but :-)
>>
>> When I enable junctions via --enable-junction I get the
>> following compile error with or w/out these patches
>>
>> gcc -DHAVE_CONFIG_H -I. -I../../support/include -I. -I../../support/include -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
>> In file included from lookup.c:31:
>> ../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
>> #include <rpc/rpc.h>
>> ^~~~~~~~~~~
>> I know how to fix it... Add the following to CFLAGS and LDFLAGS
>> `pkg-config --cflags libtirpc`
>> `pkg-config --libs libtirpc`
>>
>> First I'm wonder how you got things to compile w/out making these changes
>
> Well I built and tested this on RHEL 7. If you're testing on
> late-model Fedora, you're probably getting a slightly different
> build configuration. Just a guess.
Fair enough....

>
>
>> and secondly I'm wondering where we should make these changes...
>>
>> Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
>> flags in aclocal/libtirpc.m4?
>
> libtirpc.m4 seems like the right place, but hard-coding seems
> like a sledgehammer. Maybe have a look at the changes I made
> to libxml2.m4 and do something similar?
It turns out that the AM_CPPFLAGS were being overwritten by
the nfsref/Makefile.am file... Removing that definition
allowed the proper flags and libs to be set...

steved.

2018-11-29 18:46:14

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] Fix quoting in configure.ac



On 10/31/18 4:02 PM, Chuck Lever wrote:
> Replace an unmatched single quote to help syntax coloring editors.
>
> Signed-off-by: Chuck Lever <[email protected]>
> ---
> configure.ac | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure.ac b/configure.ac
> index cf1c4b9..16eae06 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -165,7 +165,7 @@ AC_ARG_ENABLE(uuid,
> choose_blkid=default)
> AC_ARG_ENABLE(mount,
> [AC_HELP_STRING([--disable-mount],
> - [Don't build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
> + [Do not build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
> enable_mount=$enableval,
> enable_mount=yes)
> AM_CONDITIONAL(CONFIG_MOUNT, [test "$enable_mount" = "yes"])
>
All three patches committed....

steved.

2018-11-29 18:47:28

by Chuck Lever III

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] Fix quoting in configure.ac



> On Nov 29, 2018, at 1:46 PM, Steve Dickson <[email protected]> wrote:
>
>
>
> On 10/31/18 4:02 PM, Chuck Lever wrote:
>> Replace an unmatched single quote to help syntax coloring editors.
>>
>> Signed-off-by: Chuck Lever <[email protected]>
>> ---
>> configure.ac | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index cf1c4b9..16eae06 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -165,7 +165,7 @@ AC_ARG_ENABLE(uuid,
>> choose_blkid=default)
>> AC_ARG_ENABLE(mount,
>> [AC_HELP_STRING([--disable-mount],
>> - [Don't build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
>> + [Do not build mount.nfs and do use the util-linux mount(8) functionality. @<:@default=no@:>@])],
>> enable_mount=$enableval,
>> enable_mount=yes)
>> AM_CONDITIONAL(CONFIG_MOUNT, [test "$enable_mount" = "yes"])
>>
> All three patches committed....

Excellent, thanks!


--
Chuck Lever