diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2012-12-12 10:31:06 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2012-12-12 10:32:29 -0500 |
commit | 11d4f1d2feae160caa35c4eb8565c969dc16a24d (patch) | |
tree | aac36c3b3849f7a094fc6c0cf95a6e3b01f6b424 | |
parent | 3d0b8f58fbfa6e17c9b7ec7f73b5a3bb1fa81bcc (diff) | |
download | nfs-utils-11d4f1d2feae160caa35c4eb8565c969dc16a24d.tar.gz nfs-utils-11d4f1d2feae160caa35c4eb8565c969dc16a24d.tar.xz nfs-utils-11d4f1d2feae160caa35c4eb8565c969dc16a24d.zip |
mountd: Report the absolute path used to load the junction plug-in
As a debugging feature, report the absolute pathname of the plug-in
library that mountd loads to resolve junctions.
Since mountd passes a relative path to dlopen(3), dlopen(3) must
search for the right library. Displaying the absolute pathname of
the object that it found verifies that mountd loaded the correct
plug-in.
Note: dlinfo(3) is provided by libdl, but there doesn't seem to be a
man page on Fedora 16 for dlinfo(3). Instead, see:
http://www.unix.com/man-page/all/3/dlinfo/
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | utils/mountd/cache.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index c264e14..3853bb6 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -826,6 +826,7 @@ lookup_export(char *dom, char *path, struct addrinfo *ai) #ifdef HAVE_NFS_PLUGIN_H #include <dlfcn.h> +#include <link.h> #include <nfs-plugin.h> /* @@ -1090,6 +1091,7 @@ static struct exportent *lookup_junction(char *dom, const char *pathname, struct addrinfo *ai) { struct exportent *exp; + struct link_map *map; void *handle; handle = dlopen("libnfsjunct.so", RTLD_NOW); @@ -1097,6 +1099,11 @@ static struct exportent *lookup_junction(char *dom, const char *pathname, xlog(D_GENERAL, "%s: dlopen: %s", __func__, dlerror()); return NULL; } + + if (dlinfo(handle, RTLD_DI_LINKMAP, &map) == 0) + xlog(D_GENERAL, "%s: loaded plug-in %s", + __func__, map->l_name); + (void)dlerror(); /* Clear any error */ exp = invoke_junction_ops(handle, dom, pathname, ai); |