sahlberg / libnfs Goto Github PK
View Code? Open in Web Editor NEWNFS client library
License: Other
NFS client library
License: Other
Hi.. Im having an issue, and i think it relates to libnfs.
Im trying to setup my NFS mounts the NFSv4 way, with only one exported folder and the others, that I want to share, bind mounted into the exported folder.
See link for more details. http://forum.xbmc.org/showthread.php?tid=176446
Is this not supported in libnfs or am i doing it wrong?
Thank you very much for your time and effort on this project.
nfs_stat() is suboptimal since it tries to manipulate the system stat structure, of which there is near infinite mutations on some systems.
Even linux have madness many mutations.
Create a new nfsstat structure that is uint64_t all the way and create a new function to
access this.
Flag the existing nfs_stat() function as deprecated.
The client is Windows 8.1 Pro 64-bit. The issues occur with XBMC (latest nightly builds using libnfs 1.6 I believe, which is 32-bit only under Windows if that helps). The users there told me to check here as they are unable to track down the problem. Host system is Ubuntu saucy 64-bit (though I have tried other distros as well). I am able to replicate the problem nearly 100% of the time. Smaller files (around 2GB or less) open fine. But larger ones generate the following error:
ERROR: XFILE::CNFSFile::Read - Error( -22, pread call failed with "NFS: Read failed with NFS3ERR_INVAL(-22)" )
Other users have reported the same problem under similar configurations. I was told to post the Wireshark logs here, which is impossible due to file size and type limitations. Please let me know how I can get them to you if they would be useful.
In short, Wireshark shows a bunch of lines as follows:
192.168.1.10 192.168.1.100 TCP 1514 [TCP segment of a reassembled PDU]
192.168.1.10 192.168.1.100 TCP 1514 [TCP segment of a reassembled PDU]
192.168.1.100 192.168.1.10 TCP 54 811 > nfs [ACK] Seq=4557 Ack=857773 Win=97792 Len=0
192.168.1.10 192.168.1.100 NFS 1482 V3 READ Reply (Call In 1060) Len: 65536
With about one of these per second:
192.168.1.10 192.168.1.100 TCP 1482 [TCP Retransmission] nfs > 811 [PSH, ACK] Seq=857773 Ack=4557 Win=38912 Len=1428[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]
Where 192.168.1.10 is the NFS server (and non-Windows systems not using libnfs are able to open these files fine) and 192.168.1.100 is the Windows 8.1 client.
A basic synchronous program which does nfs_stat(); sleep(800); nfs_stat(); hangs in the second nfs_stat call.
It would appear that the auto reconnect is not doing it'sjob and so it calls poll on a file descriptor that is -1 which than makes poll wait indefinitely.
0x00007f1043758800 in __poll_nocancel () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007f1043758800 in __poll_nocancel () from /usr/lib/libc.so.6
#1 0x00007f1043a3d8ee in wait_for_nfs_reply (nfs=0x1b8e010, cb_data=0x7ffffdda6770) at libnfs-sync.c:141
#2 0x00007f1043a3db69 in nfs_stat (nfs=0x1b8e010, path=0x4009d3 "/test3", st=0x7ffffdda67b0) at libnfs-sync.c:235
#3 0x00000000004008f0 in main () at test.c:31
(gdb) frame 1
#1 0x00007f1043a3d8ee in wait_for_nfs_reply (nfs=0x1b8e010, cb_data=0x7ffffdda6770) at libnfs-sync.c:141
141 if (poll(&pfd, 1, -1) < 0) {
(gdb) list
136
137 while (!cb_data->is_finished) {
138
139 pfd.fd = nfs_get_fd(nfs);
140 pfd.events = nfs_which_events(nfs);
141 if (poll(&pfd, 1, -1) < 0) {
142 nfs_set_error(nfs, "Poll failed");
143 cb_data->status = -EIO;
144 break;
145 }
(gdb) p nfs
$1 = (struct nfs_context *) 0x1b8e010
(gdb) p *nfs
$2 = {rpc = 0x1b8e060, server = 0x1b92350 "127.0.0.1", export = 0x1b92370 "/exports/share", rootfh = {data = {data_len = 28, data_val = 0x1b936e0 "\001"}}, readmax = 262144, writemax = 262144,
cwd = 0x1b92280 "/"}
(gdb) p *nfs->rpc
$3 = {magic = 3336856629, fd = -1, is_connected = 0, error_string = 0x1b93810 "Socket has been closed", connect_cb = 0x0, connect_data = 0x1b93710, auth = 0x1b92210, xid = 3486973964,
encodebuf = 0x7f1043d51010 "\200", encodebuflen = 1052672, outqueue = {head = 0x1b93550, tail = 0x1b93550}, udp_src = {ss_family = 0, __ss_align = 0, __ss_padding = '\000' <repeats 111 times>}, waitpdu = {{
head = 0x0, tail = 0x0} <repeats 1024 times>}, inpos = 0, insize = 0, inbuf = 0x0, is_udp = 0, udp_dest = 0x0, is_broadcast = 0, s = {ss_family = 2, __ss_align = 0,
__ss_padding = '\000' <repeats 111 times>}, auto_reconnect = 0, fragments = 0x0, tcp_syncnt = -1, uid = 1000, gid = 1000}
Thanks for looking into this.
Performance for path operations such as open() is poor since we perform a lookup for every component of the path, every time.
We should add a path to filehandle cache to store the n most recent paths that were lookedup.
A good place to add this would be to do the "check if path is in cache" in nfs_loopuppath_async after the call to nfs_normalize_path.
If we find the path in the cache we perform a GETATTR to check the mtime to validate the path instead of calling out to nfs_lookup_path_async_internal().
The place in nfs_lookup_path_async_internal() where we are finished looking up a path and invoke the callback is probably a goo place to insert new entries into the path cache.
We need pmap version 3 in order for full ipv6 support.
Some servers run the MOUNT protocol on different port numbers for IPv6 vs IPv4
and we would currently not be able to detect which port to connect to for the mount protocol for those servers since PMAP v2 would always return the port for IPv4.
Hello,
both versions fail to build with --enable-tirpc.
My system:
I created an ebuild for gentoo to have libnfs available in portage as an external dependeny for the upcoming xbmc eden release. Please see the link for the ebuild: https://bugs.gentoo.org/show_bug.cgi?id=382751
Build logs:
v1.0.0:
make[2]: Leaving directory /var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/rquota' Making all in lib make[2]: Entering directory
/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/lib'
/bin/sh ../libtool --tag=CC --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=attribute((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c -o libnfs_la-init.lo test -f 'init.c' || echo './'
init.c
libtool: compile: i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=attribute((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c init.c -fPIC -DPIC -o .libs/libnfs_la-init.o
In file included from init.c:30:0:
/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include/libnfs.h:66:58: warning: 'struct AUTH' declared inside parameter list
/bin/sh ../libtool --tag=CC --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=attribute((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c -o libnfs_la-libnfs.lo test -f 'libnfs.c' || echo './'
libnfs.c
libtool: compile: i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=attribute((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c libnfs.c -fPIC -DPIC -o .libs/libnfs_la-libnfs.o
In file included from libnfs.c:40:0:
/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include/libnfs.h:66:58: warning: 'struct AUTH' declared inside parameter list
libnfs.c:114:6: error: conflicting types for 'nfs_set_auth'
/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/include/libnfs.h:66:13: note: previous declaration of 'nfs_set_auth' was here
make[2]: *** [libnfs_la-libnfs.lo] Error 1
make[2]: Leaving directory /var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/var/tmp/portage/net-libs/libnfs-1.0.0/work/libnfs-1.0.0'
make: *** [all] Error 2
master:
Making all in lib
make[2]: Entering directory /var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/lib' /bin/sh ../libtool --tag=CC --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=__attribute__((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c -o libnfs_la-init.lo
test -f 'init.c' || echo './'init.c libtool: compile: i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=__attribute__((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c init.c -fPIC -DPIC -o .libs/libnfs_la-init.o In file included from init.c:30:0: /var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include/libnfs.h:66:58: warning: 'struct AUTH' declared inside parameter list /bin/sh ../libtool --tag=CC --mode=compile i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=__attribute__((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c -o libnfs_la-libnfs.lo
test -f 'libnfs.c' || echo './'libnfs.c libtool: compile: i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I.. -I/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include -I../mount -I../nfs -I../portmap -I../rquota "-D_U_=__attribute__((unused))" -march=atom -Os -pipe -fomit-frame-pointer -I/usr/include/tirpc -c libnfs.c -fPIC -DPIC -o .libs/libnfs_la-libnfs.o In file included from libnfs.c:40:0: /var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include/libnfs.h:66:58: warning: 'struct AUTH' declared inside parameter list libnfs.c:114:6: error: conflicting types for 'nfs_set_auth' /var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/include/libnfs.h:66:13: note: previous declaration of 'nfs_set_auth' was here make[2]: *** [libnfs_la-libnfs.lo] Error 1 make[2]: Leaving directory
/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/net-libs/libnfs-9999/work/libnfs-9999'
make: *** [all] Error 2
If you need more input just let me know.
Regards
Howdy. I was using the libnfs-dev
as part of ubuntu 14.04 (x86_64), but wanted to try the cutting edge version for some of the newer APIs. My very simple program currently prints file attributes of the top-level directory of a mounpoint; it works with libnfs-dev
(Version: 1.3.0-2ubuntu1).
Swapping to git/libnfs
, there were some defines that weren't being picked up via ./configure
; my sample program compile failed with unknown types and I had to add:
#include <sys/time.h>
typedef __caddr_t caddr_t;
typedef __u_quad_t u_quad_t;
Including <rpc/types.h>
for caddr_t
and u_quad_t
ran into type redefinition errors so I manually added what was missing.
After making these changes, and compiling/linking successfully, my sample program no longer connects to the server with: mount/mnt call failed with "RPC error. Program is not available on 172.16.37.10".
I thought that perhaps my manual compile hacks were incorrect (and maybe they are), so I tried the installed git/bin/nfs-ls
and it couldn't connect to the server, either, with the same Program is not available... error message.
==> ./bootstrap
autoreconf: Entering directory .' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force -I m4 aclocal: warning: couldn't open directory 'm4': No such file or directory autoreconf: configure.ac: tracing autoreconf: running: glibtoolize --copy --force glibtoolize: putting auxiliary files in '.'. glibtoolize: copying file './ltmain.sh' glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. glibtoolize: copying file 'm4/libtool.m4' glibtoolize: copying file 'm4/ltoptions.m4' glibtoolize: copying file 'm4/ltsugar.m4' glibtoolize: copying file 'm4/ltversion.m4' glibtoolize: copying file 'm4/lt~obsolete.m4' autoreconf: running: /usr/local/Cellar/autoconf/2.69/bin/autoconf --force autoreconf: running: /usr/local/Cellar/autoconf/2.69/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing configure.ac:8: installing './ar-lib' configure.ac:8: installing './compile' configure.ac:5: installing './config.guess' configure.ac:5: installing './config.sub' configure.ac:4: installing './install-sh' configure.ac:4: installing './missing' examples/Makefile.am: installing './depcomp' autoreconf: Leaving directory
.'
==> ./configure --disable-dependency-tracking --disable-silent-rules --prefix=/usr/local/Cellar/libnfs/1.9.8
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-apple-darwin14.5.0
checking host system type... x86_64-apple-darwin14.5.0
checking for style of include used by make... GNU
checking for gcc... clang
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether clang accepts -g... yes
checking for clang option to accept ISO C89... none needed
checking whether clang understands -c and -o together... yes
checking dependency style of clang... none
checking for ar... ar
checking the archiver (ar) interface... ar
checking for gcc... (cached) clang
checking whether we are using the GNU C compiler... (cached) yes
checking whether clang accepts -g... (cached) yes
checking for clang option to accept ISO C89... (cached) none needed
checking whether clang understands -c and -o together... (cached) yes
checking dependency style of clang... (cached) none
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/local/Library/ENV/4.3/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by clang... /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
checking if the linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking how to convert x86_64-apple-darwin14.5.0 file names to x86_64-apple-darwin14.5.0 format... func_convert_file_noop
checking how to convert x86_64-apple-darwin14.5.0 file names to toolchain format... func_convert_file_noop
checking for /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @file support... no
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from clang object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking for -force_load linker flag... yes
checking how to run the C preprocessor... clang -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if clang supports -fno-rtti -fno-exceptions... yes
checking for clang option to produce PIC... -fno-common -DPIC
checking if clang PIC flag -fno-common -DPIC works... yes
checking if clang static flag -static works... no
checking if clang supports -c -o file.o... yes
checking if clang supports -c -o file.o... (cached) yes
checking whether the clang linker (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin14.5.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for pkg-config... no
checking whether to set -Werror... checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking for unistd.h... (cached) yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking net/if.h usability... yes
checking net/if.h presence... yes
checking for net/if.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/vfs.h usability... no
checking sys/vfs.h presence... no
checking for sys/vfs.h... no
checking sys/statvfs.h usability... yes
checking sys/statvfs.h presence... yes
checking for sys/statvfs.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking netinet/tcp.h usability... yes
checking netinet/tcp.h presence... yes
checking for netinet/tcp.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking for struct sockaddr.sa_len... yes
checking for struct sockaddr_storage.ss_family... yes
checking for struct stat.st_mtim.tv_nsec... no
checking whether sys/types.h defines makedev... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating include/Makefile
config.status: creating lib/Makefile
config.status: creating mount/Makefile
config.status: creating nfs/Makefile
config.status: creating nlm/Makefile
config.status: creating nsm/Makefile
config.status: creating portmap/Makefile
config.status: creating rquota/Makefile
config.status: creating utils/Makefile
config.status: creating examples/Makefile
config.status: creating libnfs.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
==> make install
Making install in doc
make[2]: Nothing to be done for install-exec-am'. .././install-sh -c -d '/usr/local/Cellar/libnfs/1.9.8/share/man/man1' /usr/bin/install -c -m 644 nfs-cat.1 nfs-cp.1 nfs-ls.1 '/usr/local/Cellar/libnfs/1.9.8/share/man/man1' Making install in mount /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libmount_la-mount.lo
test -f 'mount.c' || echo './'mount.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libmount_la-libnfs-raw-mount.lo
test -f 'libnfs-raw-mount.c' || echo './'libnfs-raw-mount.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c mount.c -fno-common -DPIC -o .libs/libmount_la-mount.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-mount.c -fno-common -DPIC -o .libs/libmount_la-libnfs-raw-mount.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-mount.c -o libmount_la-libnfs-raw-mount.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c mount.c -o libmount_la-mount.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o libmount.la libmount_la-mount.lo libmount_la-libnfs-raw-mount.lo libtool: link: ar cru .libs/libmount.a .libs/libmount_la-mount.o .libs/libmount_la-libnfs-raw-mount.o libtool: link: ranlib .libs/libmount.a libtool: link: ( cd ".libs" && rm -f "libmount.la" && ln -s "../libmount.la" "libmount.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in nfs /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-nfs.lo
test -f 'nfs.c' || echo './'nfs.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-nfsacl.lo
test -f 'nfsacl.c' || echo './'nfsacl.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-libnfs-raw-nfs.lo
test -f 'libnfs-raw-nfs.c' || echo './'libnfs-raw-nfs.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nfs.c -fno-common -DPIC -o .libs/libnfs_la-nfs.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nfsacl.c -fno-common -DPIC -o .libs/libnfs_la-nfsacl.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nfs.c -fno-common -DPIC -o .libs/libnfs_la-libnfs-raw-nfs.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nfsacl.c -o libnfs_la-nfsacl.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nfs.c -o libnfs_la-nfs.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nfs.c -o libnfs_la-libnfs-raw-nfs.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o libnfs.la libnfs_la-nfs.lo libnfs_la-nfsacl.lo libnfs_la-libnfs-raw-nfs.lo libtool: link: ar cru .libs/libnfs.a .libs/libnfs_la-nfs.o .libs/libnfs_la-nfsacl.o .libs/libnfs_la-libnfs-raw-nfs.o libtool: link: ranlib .libs/libnfs.a libtool: link: ( cd ".libs" && rm -f "libnfs.la" && ln -s "../libnfs.la" "libnfs.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in nlm /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnlm_la-nlm.lo
test -f 'nlm.c' || echo './'nlm.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnlm_la-libnfs-raw-nlm.lo
test -f 'libnfs-raw-nlm.c' || echo './'libnfs-raw-nlm.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nlm.c -fno-common -DPIC -o .libs/libnlm_la-libnfs-raw-nlm.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nlm.c -fno-common -DPIC -o .libs/libnlm_la-nlm.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nlm.c -o libnlm_la-nlm.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nlm.c -o libnlm_la-libnfs-raw-nlm.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o libnlm.la libnlm_la-nlm.lo libnlm_la-libnfs-raw-nlm.lo libtool: link: ar cru .libs/libnlm.a .libs/libnlm_la-nlm.o .libs/libnlm_la-libnfs-raw-nlm.o libtool: link: ranlib .libs/libnlm.a libtool: link: ( cd ".libs" && rm -f "libnlm.la" && ln -s "../libnlm.la" "libnlm.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in nsm /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnsm_la-nsm.lo
test -f 'nsm.c' || echo './'nsm.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnsm_la-libnfs-raw-nsm.lo
test -f 'libnfs-raw-nsm.c' || echo './'libnfs-raw-nsm.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nsm.c -fno-common -DPIC -o .libs/libnsm_la-nsm.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nsm.c -fno-common -DPIC -o .libs/libnsm_la-libnfs-raw-nsm.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-nsm.c -o libnsm_la-libnfs-raw-nsm.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c nsm.c -o libnsm_la-nsm.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o libnsm.la libnsm_la-nsm.lo libnsm_la-libnfs-raw-nsm.lo libtool: link: ar cru .libs/libnsm.a .libs/libnsm_la-nsm.o .libs/libnsm_la-libnfs-raw-nsm.o libtool: link: ranlib .libs/libnsm.a libtool: link: ( cd ".libs" && rm -f "libnsm.la" && ln -s "../libnsm.la" "libnsm.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in portmap /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libportmap_la-portmap.lo
test -f 'portmap.c' || echo './'portmap.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libportmap_la-libnfs-raw-portmap.lo
test -f 'libnfs-raw-portmap.c' || echo './'libnfs-raw-portmap.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-portmap.c -fno-common -DPIC -o .libs/libportmap_la-libnfs-raw-portmap.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c portmap.c -fno-common -DPIC -o .libs/libportmap_la-portmap.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-portmap.c -o libportmap_la-libnfs-raw-portmap.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c portmap.c -o libportmap_la-portmap.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o libportmap.la libportmap_la-portmap.lo libportmap_la-libnfs-raw-portmap.lo libtool: link: ar cru .libs/libportmap.a .libs/libportmap_la-portmap.o .libs/libportmap_la-libnfs-raw-portmap.o libtool: link: ranlib .libs/libportmap.a libtool: link: ( cd ".libs" && rm -f "libportmap.la" && ln -s "../libportmap.la" "libportmap.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in rquota /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o librquota_la-rquota.lo
test -f 'rquota.c' || echo './'rquota.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c -o librquota_la-libnfs-raw-rquota.lo
test -f 'libnfs-raw-rquota.c' || echo './'libnfs-raw-rquota.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c rquota.c -fno-common -DPIC -o .libs/librquota_la-rquota.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-rquota.c -fno-common -DPIC -o .libs/librquota_la-libnfs-raw-rquota.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-raw-rquota.c -o librquota_la-libnfs-raw-rquota.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -g -O2 -D_FILE_OFFSET_BITS=64 -c rquota.c -o librquota_la-rquota.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -g -O2 -D_FILE_OFFSET_BITS=64 -o librquota.la librquota_la-rquota.lo librquota_la-libnfs-raw-rquota.lo libtool: link: ar cru .libs/librquota.a .libs/librquota_la-rquota.o .libs/librquota_la-libnfs-raw-rquota.o libtool: link: ranlib .libs/librquota.a libtool: link: ( cd ".libs" && rm -f "librquota.la" && ln -s "../librquota.la" "librquota.la" ) make[2]: Nothing to be done for
install-exec-am'.
make[2]: Nothing to be done for install-data-am'. Making install in lib /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-init.lo
test -f 'init.c' || echo './'init.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-libnfs.lo
test -f 'libnfs.c' || echo './'libnfs.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-libnfs-sync.lo
test -f 'libnfs-sync.c' || echo './'libnfs-sync.c /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-libnfs-zdr.lo
test -f 'libnfs-zdr.c' || echo './'libnfs-zdr.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs.c -fno-common -DPIC -o .libs/libnfs_la-libnfs.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-sync.c -fno-common -DPIC -o .libs/libnfs_la-libnfs-sync.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c init.c -fno-common -DPIC -o .libs/libnfs_la-init.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-zdr.c -fno-common -DPIC -o .libs/libnfs_la-libnfs-zdr.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c init.c -o libnfs_la-init.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-zdr.c -o libnfs_la-libnfs-zdr.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-pdu.lo
test -f 'pdu.c' || echo './'pdu.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs-sync.c -o libnfs_la-libnfs-sync.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=compile clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c -o libnfs_la-socket.lo
test -f 'socket.c' || echo './'socket.c libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c pdu.c -fno-common -DPIC -o .libs/libnfs_la-pdu.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c socket.c -fno-common -DPIC -o .libs/libnfs_la-socket.o libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c pdu.c -o libnfs_la-pdu.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c socket.c -o libnfs_la-socket.o >/dev/null 2>&1 libtool: compile: clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nfs -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nlm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/nsm -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/portmap -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/rquota "-D_U_=__attribute__((unused))" -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -c libnfs.c -o libnfs_la-libnfs.o >/dev/null 2>&1 /bin/sh ../libtool --tag=CC --mode=link clang -Wall -Wshadow -Wno-write-strings -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wno-strict-aliasing -g -O2 -D_FILE_OFFSET_BITS=64 -version-info 9:0:1 -o libnfs.la -rpath /usr/local/Cellar/libnfs/1.9.8/lib libnfs_la-init.lo libnfs_la-libnfs.lo libnfs_la-libnfs-sync.lo libnfs_la-libnfs-zdr.lo libnfs_la-pdu.lo libnfs_la-socket.lo ../mount/libmount.la ../nfs/libnfs.la ../nlm/libnlm.la ../nsm/libnsm.la ../portmap/libportmap.la ../rquota/librquota.la libtool: link: clang -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libnfs.8.dylib .libs/libnfs_la-init.o .libs/libnfs_la-libnfs.o .libs/libnfs_la-libnfs-sync.o .libs/libnfs_la-libnfs-zdr.o .libs/libnfs_la-pdu.o .libs/libnfs_la-socket.o -Wl,-force_load,../mount/.libs/libmount.a -Wl,-force_load,../nfs/.libs/libnfs.a -Wl,-force_load,../nlm/.libs/libnlm.a -Wl,-force_load,../nsm/.libs/libnsm.a -Wl,-force_load,../portmap/.libs/libportmap.a -Wl,-force_load,../rquota/.libs/librquota.a -g -O2 -install_name /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.8.dylib -compatibility_version 10 -current_version 10.0 -Wl,-single_module libtool: link: (cd ".libs" && rm -f "libnfs.dylib" && ln -s "libnfs.8.dylib" "libnfs.dylib") libtool: link: (cd .libs/libnfs.lax/libmount.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../mount/.libs/libmount.a") libtool: link: (cd .libs/libnfs.lax/libnfs.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../nfs/.libs/libnfs.a") libtool: link: (cd .libs/libnfs.lax/libnlm.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../nlm/.libs/libnlm.a") libtool: link: (cd .libs/libnfs.lax/libnsm.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../nsm/.libs/libnsm.a") libtool: link: (cd .libs/libnfs.lax/libportmap.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../portmap/.libs/libportmap.a") libtool: link: (cd .libs/libnfs.lax/librquota.a && ar x "/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/lib/../rquota/.libs/librquota.a") libtool: link: ar cru .libs/libnfs.a libnfs_la-init.o libnfs_la-libnfs.o libnfs_la-libnfs-sync.o libnfs_la-libnfs-zdr.o libnfs_la-pdu.o libnfs_la-socket.o .libs/libnfs.lax/libmount.a/libmount_la-libnfs-raw-mount.o .libs/libnfs.lax/libmount.a/libmount_la-mount.o .libs/libnfs.lax/libnfs.a/libnfs_la-libnfs-raw-nfs.o .libs/libnfs.lax/libnfs.a/libnfs_la-nfs.o .libs/libnfs.lax/libnfs.a/libnfs_la-nfsacl.o .libs/libnfs.lax/libnlm.a/libnlm_la-libnfs-raw-nlm.o .libs/libnfs.lax/libnlm.a/libnlm_la-nlm.o .libs/libnfs.lax/libnsm.a/libnsm_la-libnfs-raw-nsm.o .libs/libnfs.lax/libnsm.a/libnsm_la-nsm.o .libs/libnfs.lax/libportmap.a/libportmap_la-libnfs-raw-portmap.o .libs/libnfs.lax/libportmap.a/libportmap_la-portmap.o .libs/libnfs.lax/librquota.a/librquota_la-libnfs-raw-rquota.o .libs/libnfs.lax/librquota.a/librquota_la-rquota.o libtool: link: ranlib .libs/libnfs.a libtool: link: rm -fr .libs/libnfs.lax libtool: link: ( cd ".libs" && rm -f "libnfs.la" && ln -s "../libnfs.la" "libnfs.la" ) make[2]: Nothing to be done for
install-data-am'.
.././install-sh -c -d '/usr/local/Cellar/libnfs/1.9.8/lib'
/bin/sh ../libtool --mode=install /usr/bin/install -c libnfs.la '/usr/local/Cellar/libnfs/1.9.8/lib'
libtool: install: /usr/bin/install -c .libs/libnfs.8.dylib /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.8.dylib
libtool: install: (cd /usr/local/Cellar/libnfs/1.9.8/lib && { ln -s -f libnfs.8.dylib libnfs.dylib || { rm -f libnfs.dylib && ln -s libnfs.8.dylib libnfs.dylib; }; })
libtool: install: /usr/bin/install -c .libs/libnfs.lai /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.la
libtool: install: /usr/bin/install -c .libs/libnfs.a /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.a
libtool: install: chmod 644 /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.a
libtool: install: ranlib /usr/local/Cellar/libnfs/1.9.8/lib/libnfs.a
Making install in include
make[2]: Nothing to be done for `install-exec-am'.
.././install-sh -c -d '/usr/local/Cellar/libnfs/1.9.8/include/nfsc'
/usr/bin/install -c -m 644 nfsc/libnfs.h nfsc/libnfs-raw.h nfsc/libnfs-zdr.h ../mount/libnfs-raw-mount.h ../portmap/libnfs-raw-portmap.h ../nfs/libnfs-raw-nfs.h ../nlm/libnfs-raw-nlm.h ../nsm/libnfs-raw-nsm.h ../rquota/libnfs-raw-rquota.h '/usr/local/Cellar/libnfs/1.9.8/include/nfsc'
Making install in utils
clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount "-D_U_=attribute((unused))" -g -O2 -D_FILE_OFFSET_BITS=64 -c -o nfs-cat.o nfs-cat.c
clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount "-D_U_=attribute((unused))" -g -O2 -D_FILE_OFFSET_BITS=64 -c -o nfs-cp.o nfs-cp.c
clang -DHAVE_CONFIG_H -I. -I.. -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/include/nfsc -I/private/tmp/libnfs20150828-19432-1opzcb0/libnfs-libnfs-1.9.8/mount "-D_U_=attribute((unused))" -g -O2 -D_FILE_OFFSET_BITS=64 -c -o nfs-ls.o nfs-ls.c
nfs-cp.c:107:7: error: no member named 'st_atim' in 'struct stat'
st->st_atim.tv_sec = nfs_st.nfs_atime;
~~ ^
nfs-cp.c:108:7: error: no member named 'st_mtim' in 'struct stat'
st->st_mtim.tv_sec = nfs_st.nfs_mtime;
~~ ^
nfs-cp.c:109:7: error: no member named 'st_ctim' in 'struct stat'
st->st_ctim.tv_sec = nfs_st.nfs_ctime;
~~ ^
3 errors generated.
make[1]: *** [nfs-cp.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [install-recursive] Error 1
I compiled and mounted a fuse file system using fuse_nfs in the examples folder. I have a file that I created by doing "seq" that is 932M long. If I use libnfs directly to read this file, I'm successful. For instance, nfs_cp works fine. However, when I try to read this file using fuse_nfs, it hangs after reading some number of lines. I noticed that fuse by default uses multiple threads, and I thought that maybe this was causing the problem. It hangs after reading about "699319" lines from the file. I inserted logging statements, and found that nfs_pread waits indefinitely for nfs.
nfs_pread async count=131072 offset=2949120 => never returns
I don't understand why pread is hanging when used from fuse, but works when I run it directly.
Update:
I updated fuse_nfs to pass different arguments to fuse: "-s" which forces single thread. This seems to "solve" the problem. I guess fuse_nfs is not intended to run multithreaded. Would it be advisable to modify fuse_nfs to support multithreaded use by creating a unique nfs context for each thread?
Initial ticket raised on XBMC issue tracker (along with Wireshark packet captures): http://trac.xbmc.org/ticket/13324
XBMC on R-Pi (OpenELEC, Raspbmc) suffers NFS connectivity issues such as being unable to establish an NFS connection at all, and randomly unable to stat existing files/folders even though a connection is successfully established. This is when connecting with a FreeNAS 8.0.2 server (x64 build). These problems occur about 50% of the time after booting, the other 50% of the time the R-Pi is able to establish a connection and stat files/folders without any problem.
As far as I can recall there were no NFS problems with the R-Pi until around the time libNFS 1.3 was introduced (June/July-ish?)
Using OS-level NFS mounts (ie. mounting via /etc/fstab) in OpenELEC/Raspbmc always work reliably - it's only the NFS mounts established within XBMC that are problematic.
Let me know if I can provide any more detail on this frustrating issue.
Repro:
When building libnfs, I run into problems when rpcgen is called. uclibc does not provide rpcgen so we take it from nfs-utils.
rm -f libnfs-raw-nfs.c libnfs-raw-nfs.h
rpcgen -h nfs.x > libnfs-raw-nfs.h
typedef unsigned hyper uint64;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
nfs.x, line 18: expected ';'
make[2]: *** [nfs-stamp] Error 1
Is it possible you ship the generated C code with the release so there is no need to run rpcgen?
If READDIRPLUS fails we fallback to a READDIR + LOOKUP-loop
If one of the LOOKUPs fail, due to permission issues, we should not fail the whole READDIR/opendir() operation. Just leave the directory entry in there, with empty stat data but let opendir() complete successfully.
This is similar to making writes be zero copy, but it is MUCH harder for the read case.
For reads, it may not be feasible to read straight from the socket directly into the application buffers using iovectors.
The reason why this is difficult is because there are 4 different variable length fields in the rpc and nfs write headers before we even get to the data and thus we would need 4 or 5 system calls to even get to the point where we know that "next byte from the socket is data" and can start reading into the application buffer.
With that many system calls it may well be cheaper to just keep copying the data. But we could copy the data fewer times, and avoid the unmarshalling of it.
We could
1, Read the entire PDU, based on the initial record marker, into a buffer just like we do today.
2, Then we use a new READ3 fucntion that just unmarshalls up to and including the length field just immediately before the data but do not unmarshall the databytes.
3, Instead just memcpy() the remaining part of the input buffer into the buffer the application provided.
Better than the current multiple copies but it is really difficult to do zero-copy for a protocol that does not have fixed header structures :-(
We face an issue that raises if the client device (xbmc/openelec 2.0) was resumed after a longer time (over night).
The nfs connections dont work after resume, there are no errors at the client or server logs. After restarting the device everything works.
The issue seems to be introduced with libNFS version 1.3 (at least openelec builds with 1.2 does not have that issues).
This should be fairly trivial to add, see libiscsi if need be.
With some minor fixes I am able to build Windows x86 (Win32) configuration with VS2010. It doesn't seem to use rpcgen.exe either.
With x64 configuration it runs rpcgen.exe overwriting the existing files. Is this correct behavior?
Remove all functions that use struct stat in their arguments.
All callers should be using nfs_stat64() since that is the only abi stable version of stat.
nfs_truncate
fails due to type demotion and sign-extension. For example, truncating to size 0x280000000
is 0xffffffff80000000
on the wire due to the uint64_t
-> int
-> uint64_t
path in nfs_truncate_async
(i.e., 0x280000000
-> 0x80000000
-> 0xffffffff80000000
)
In nfs_truncate_async
, the 64-bit value is passed into the last parameter of nfs_lookuppath_async
, which is int continue_int
. This is stored in nfs_cb_data->continue_int
, which is also an int
. In nfs_truncate_continue_internal
it converted back into a 64-bit uint64_t offset = data->continue_int;
I'm on 1.9.4, but looking at the code on github, the problem is still there.
Linux jayne01 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Hi,
When I upgraded my NFS server to Linux 3.9.3 the other day I noticed that I was no longer to connect to the NFS share through XBMC (which I believe makes use of this library).
The error in the logs is "RPC Packet not accepted by the server".
I have two outstanding forum threads open about this, one on the XBMC forums and one on the Arch Linux forums.
I can still mount the share just fine from the CLI using nfs-utils with mount -t nfs4
, but of course, this requires root.
Add some simple readahead for filehandles.
We should be able to track when we get sequential reads for a filehandle and can at that stage then trigger read-ahead.
Normal clients do this and serve out of cache for up to several seconds without too much ill effects.
When using the latest xbmc (which has incorporated libnfs) I can not connect to unfs3 (userspace nfs) servers. The problems seems to be some missing capabilites of unfs3 that libnfs assumes to be there. In particular, I get this error:
12:34:19 T:2969385840 ERROR: Failed to open(//) opendir call failed with "NFS: READDIR of // failed with NFS3ERR_NOTSUPP(-22)"
While not familiar with the code, grepping the code it seems libnfs uses readdirplus, which is not implemented by the unfs3 server (neither is file locking). Can you fallback to readdir, if readdirplus is not supported ?
Related to that, is it possible to configure the nfs mount options for libnfs somehow ?
Thanks in advance
I've had a report of crashes in Kodi with RPi2 test builds after 2 August - this would coincide with the inclusion of 2288339 (1.9.8).
Prior to this, my test builds had been including libnfs 6894180 and no reported issues.
Since the 1.9.8 bump on 2 August appears fairly benign, I'm not sure what else might be responsible for these crashes.
Below is a debug-enabled crashlog from build #0803 - would appreciate if you could give it the once-over:
PS. please ignore the references to 1.9.7, this is just the OpenELEC internal version that I haven't changed as it simplifies the process of updating source tarballs - be assured I'm using the source from libnfs 2288339.
PMAP v2 DUMP command is missing.
The problem: I am running the XBMC nightly builds and often when I pause and then resume playback, XBMC crashes. With help from one of the XBMC devs I narrowed the problem down to a crash within libnfs, see also: http://trac.xbmc.org/ticket/13505
I started with libnfs 1.2.x from Ubuntu 11.10 (I think), upgraded to 1.3.0 from the nightly XBMC PPA and now pulled the master from here.
I have experienced this issue for a while now and it seems to get worse. My guess is that I keep running into a race condition.
Relevant parts of the backtrace as posted at http://xbmclogs.com/show.php?id=14577 :
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ff8d1f44700 (LWP 30968)]
0x00007ff8c931064e in rpc_allocate_pdu () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
(gdb) thread apply all bt
snip
Thread 7 (Thread 0x7ff8d1f44700 (LWP 30968)):
#0 0x00007ff8c931064e in rpc_allocate_pdu () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
#1 0x00007ff8c9317936 in rpc_nfs_read_async () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
---Type to continue, or q to quit---
#2 0x00007ff8c93069b3 in nfs_pread_async () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
#3 0x00007ff8c930e58d in nfs_pread () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
#4 0x00007ff8c930e60a in nfs_read () from /usr/lib/x86_64-linux-gnu/libnfs.so.1
#5 0x0000000000c945b6 in XFILE::CNFSFile::Read(void*, long) ()
#6 0x0000000000bda796 in XFILE::CFile::Read(void*, long) ()
#7 0x0000000000a276d8 in CDVDInputStreamFile::Read(unsigned char*, int) ()
snip
I compiled libnfs from source and tried debugging the issue myself. I tried multiple things, checked all pointers in 'rpc_allocate_pdu' for sane values and concluded that the mallocs are checked properly and the memset was not causing the crash either. I then spotted that at the locations where it crashes, values from the 'rpc' struct pointer are read.
Perhaps the rpc struct is freed somewhere while 'rpc_allocate_pdu' is using it or something similar?
Please see the forum post for details about the setup:
http://forum.xbmc.org/showthread.php?tid=188811
The error log upon failed access:
23:08:32 T:2123676280 ERROR: Failed to open(//Photos/) opendir call failed with "zdr_replymsg failed in portmap_getport_reply"
23:08:32 T:1994413704 ERROR: static bool XFILE::CDirectory::GetDirectory(const CStdString&, CFileItemList&, const XFILE::CDirectory::CHints&, bool) - Error getting nfs://192.168.1.9//mnt/data0/Media/Photos/
23:08:32 T:1994413704 ERROR: CGUIDialogFileBrowser::GetDirectory(nfs://192.168.1.9//mnt/data0/Media/Photos/) failed
I was directed by google to this location:
https://github.com/sahlberg/libnfs/blob/master/lib/pdu.c
In this function:
static int rpc_process_reply(struct rpc_context *rpc, struct rpc_pdu *pdu, ZDR *zdr)
The issue is easy to reproduce here, I think it'll be easy to debug if a debug version is provided with more verbose error message.
Hi all,
libnfs 1.9.3 (and the most recent git version) appear to be broken on Arch Linux. Both seem to be broken in slightly different ways. I was hoping this issue might be able to shed some light on the problems.
First, I'm using libnfs with XBMC. So my initial testing was with xbmc debug logs. But once I compiled libnfs from git I used the nfs-ls
util for testing. My XBMC machine is obviously separate from my NFS server, both running Arch linux (Linux 3.14.4-1-ARCH #1 SMP PREEMPT Tue May 13 16:41:39 CEST 2014 x86_64 GNU/Linux
). In both cases I can mount the nfs shares just fine using mount -t nfs ...
.
When attempting to mount an NFS share in XBMC the following error is raised in the logs:
02:43:50 T:139804569323264 ERROR: Failed to open(//) nfs_opendir_async failed
Also in my systemd-journal I see this:
May 29 02:43:47 desktop rpc.mountd[11635]: authenticated mount request from 127.0.0.1:35354 for /home/evan/documents/multimedia (/home/evan/documents/multimedia)
Other than that I didn't do too much digging, the rest of the debugging I did was after compiling the latest git version of libnfs.
I did most of the testing with the new nfs-ls
util in this case.
The first thing I noticed was that I'm able to connect with libnfs on the same machine running the NFS server. nfs-ls -D nfs://desktop
works fine and lists my shares.
Doing the same on my HTPC raised the error Failed to mount nfs share : nfs_service failed
. This seems pretty generic, looking at the code I removed this and this line to get to the deeper error. Which when running the same command now results in this:
Failed to mount nfs share : mount/mnt call failed with "rpc_service: socket error Connection refused(111)."
Also of note is that nothing appears in my systemd-journal on the server this time.
As per this post here reverting to libnfs-1.8.0 fixes the issue.
What might the problem be here?
It would be nice if libnfs supported O_APPEND, even though I know the NFS protocol does not. I think it would be better if the workaround was in libnfs rather than in every client that wants to do the equivalent of O_WRONLY | O_APPEND.
It is not possible to pass flags when creating a file which means that it is not possible to create a file and have the nfsfh have O_SYNC or O_APPEND.
Secondly, it doesn't seem like the exclusive create feature of NFSv3 is exposed.
I'm creating this as one bug because it might be appropriate if they are solved at the same time. Possibly we could have a new creat() function which allows passing flags like O_SYNC, O_APPEND and a new one, O_EXCL.
Thanks!
Add a cache for readdir and validate it by checking the mtime for the directory.
Howdy. I encountered a problem with a crash in rpc_set_error
, inside vsnprintf
--specifically, the char*
variable argument to a "%s"
format specifier. I tracked it down to an implicit casting problem with rpc_get_error
that wasn't warned about during make clean && make
. This is on 1.9.4, and I'm adding this mainly for posterity because the include order in 1.9.7 fixes it for 1.9.4, and if there's a general build problem that can mask errors, it may want to be investigated.
For reference:
char *rpc_get_error(struct rpc_context *rpc)
{
assert(rpc->magic == RPC_CONTEXT_MAGIC);
return rpc->error_string;
}
Here's we are, inside of rpc_get_error()
about to return.
(gdb) p rpc->error_string
$10 = 0x7feef08547e0 "libnfs_rpc_reply_body failed to decode ACCEPTED"
(gdb) list
0x00007fef00f4f120 <+56>: mov -0x8(%rbp),%rax
0x00007fef00f4f124 <+60>: mov 0x10(%rax),%rax
=> 0x00007fef00f4f128 <+64>: leaveq
0x00007fef00f4f129 <+65>: retq
gdb) p/x $rax
$12 = 0x7feef08547e0
That looks correct, but when I finish function:
(gdb) p/x $rax
$13 = 0xfffffffff08547e0
The code in question was in libnfs_rpc_msg
:
case REPLY:
ret = libnfs_rpc_reply_body(rpc, zdrs, &msg->body.rbody);
if (!ret) {
rpc_set_error(rpc, "libnfs_rpc_msg failed to decode "
"REPLY, ret=%d: %s", ret, rpc_get_error(rpc));
}
return ret;
and I changed it the following:
case REPLY:
ret = libnfs_rpc_reply_body(rpc, zdrs, &msg->body.rbody);
if (!ret) {
char *current = (char*) rpc_get_error (rpc);
rpc_set_error(rpc, "libnfs_rpc_msg failed to decode "
"REPLY, ret=%d: %s", ret, current);
}
return ret;
During compile this popped up, confirming the implicit cast:
libnfs-zdr.c: In function 'libnfs_rpc_msg':
libnfs-zdr.c:467:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
char *current = (char*) rpc_get_error (rpc);
When I added the prototype char *rpc_get_error(struct rpc_context *rpc);
to libnfs_zdr.c
, the warning went away and $rax
remained 64-bits; no more crashing.
I tracked down the original prototype of rpc_get_error
--it's in libnfs-raw.h
, and it's correct, but the include chain isn't correct: libnfs-zdr.c
includes libnfs-zdr.h
--libnfs-raw.h
isn't pulled in at all.
Now, in the master
version, libnfs-zdr.c
eventually includes libnfs-raw.h
, so it may be moot, though disturbing. I was able to mimic the includes and get it working without my prototype hack.
Dir caching currently keeps up to 1024 directories in a LRU cache.
Make this configurable. Preferably via both new API calls as well as
&option=value arguments in the nfs url.
Running on amd64 gentoo with xbmc 11 and the last release of libnfs. Adding a nfs share seg faults xbmc.
Apologies if this belongs in an xbmc bug report.
[Thread debugging using libthread_db enabled]
Core was generated by `/usr/lib64/xbmc/xbmc.bin'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007fa45f17de88 in mount_getexports_cb () from /usr/lib64/libnfs.so.1
Deep rpc_set_error
's are masked by higher-level ones so I had to instrument the code to find out what was being reported as an error. Initially, I wasn't sure if I needed the trailing slash or not.
nfs_mkdir (ctx, "/.hidden")
fails with:
DOK: path=/.hidden
DOK: new_path=
rpc_set_error: Pathname is not absulute ''
rpc_set_error: Out of memory: failed to start parsing the path component
The problem is with the strrchr
and the later determination of the target of mkdir
in the NUL-spliced new_path
(see nfs_mkdir_continue_interval
). The strrchr
nukes the root slash leading to the non-absolute pathname. The fix isn't as simple as not nuking the leading slash; nfs_mkdir_continue_interval
relies on the NUL splitting the string in twain.
For grins, I tested nfs_mkdir (ctx, "/.hidden/")
to see if it failed as I understood:
DOK: path=/.hidden/
DOK: new_path=/.hidden
rpc_set_error: NFS: Lookup of /.hidden failed with NFS3ERR_NOENT(-2)
If there's a trailing slash, then it expects the thing before the trailing slash to already exist as the parent dir, and it doesn't exist since it's the new directory.
I encounter the following failure when I attempt to compile libnfs on my Mac OS X machine.
$ ./configure
...
$ echo $?
0
$ make
...
Making all in nlm
rm -f libnfs-raw-nlm.c libnfs-raw-nlm.h
rpcgen -h -DU_INT64_PLATTFORM_TYPE=u_int64_t nlm.x > libnfs-raw-nlm.h
unsigned hyper l_offset;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
nlm.x, line 31: expected ';'
make[2]: *** [nlm-stamp] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
I am using the system-provided rpcgen
:
$ which rpcgen
/usr/bin/rpcgen
This is on Mac OS X 10.7.3:
$ system_profiler SPSoftwareDataType | grep "System Version"
System Version: Mac OS X 10.7.3 (11D50)
HEAD is at commit c33ce42
:
$ git branch
* master
$ git log -n 1 --pretty=oneline
c33ce42cc5a1422787ad63068771fcd0c22a1804 NLM add NLM_GRANTED procedure to the rpc file
If you have encountered this issue before, or if you have any ideas on how to resolve this, please let me know.
Thank you.
If you have a server that returns the filenames in a readdirplus call, but does not return the attributes, then libnfs presents the file's attributes as all 0's. Instead, it should to do a followup GETATTR on the offending entry(-ies).
This is just a question:
Does libnfs support NFS v4 and NFS v4.1? If not, any plan?
Hi, guys - this will be partial, since I'm making it up as I go along, but I'll flag it early in case it's obvious.
Ref: http://forum.xbmc.org/showthread.php?tid=176721&pid=1562792#pid1562792 and subsequent posts.
Issue is that XBMC pre-12.3 is crashing on my system when libnfs is accessed. If I revert to the version of libnfs shipped with XBMC 12.2, all is well... if I use SMB, likewise... so libnfs.dll is the suspicion.
Simple stack trace of XBMC as it dies - I'll get a better one if the symbol table really helps. libnfs crash right at the end (it brings XBMC down):
CommandLine: "C:\Program Files (x86)\XBMC\XBMC.exe"
Symbol search path is: *** Invalid ***
000c0000 00000000
01288000 XBMC.exe72970000 00007ff9
72b19000 ntdll.dll77640000 00000000
777a8000 ntdll.dll77570000 00000000
775b9000 C:\WINDOWS\SYSTEM32\wow64.dll775d0000 00000000
77638000 C:\WINDOWS\system32\wow64win.dll775c0000 00000000
775c9000 C:\WINDOWS\system32\wow64cpu.dll72a37710 cc int 3 0:000> g ModLoad: 00000000
01530000 0000000001669000 WOW64_IMAGE_SECTION ModLoad: 00000000
77430000 0000000077570000 WOW64_IMAGE_SECTION ModLoad: 00000000
01530000 0000000001669000 NOT_AN_IMAGE ModLoad: 00000000
01530000 00000000016a1000 NOT_AN_IMAGE ModLoad: 00000000
77430000 0000000077570000 C:\WINDOWS\SysWOW64\KERNEL32.DLL ModLoad: 00000000
76d00000 0000000076dcf000 C:\WINDOWS\SysWOW64\KERNELBASE.dll ModLoad: 00000000
74d90000 0000000074f8f000 C:\WINDOWS\SysWOW64\d3dx9_43.dll ModLoad: 00000000
5f510000 000000005f545000 C:\WINDOWS\SysWOW64\DINPUT8.dll ModLoad: 00000000
5f490000 000000005f509000 C:\WINDOWS\SysWOW64\DSOUND.dll ModLoad: 00000000
74cb0000 0000000074cd0000 C:\WINDOWS\SysWOW64\WINMM.dll ModLoad: 00000000
74cf0000 0000000074d04000 C:\WINDOWS\SysWOW64\MPR.dll ModLoad: 00000000
74c70000 0000000074c8e000 C:\WINDOWS\SysWOW64\IPHLPAPI.DLL ModLoad: 00000000
74d50000 0000000074d8e000 C:\WINDOWS\SysWOW64\POWRPROF.dll ModLoad: 00000000
76760000 000000007690c000 C:\WINDOWS\SysWOW64\SETUPAPI.dll ModLoad: 00000000
752b0000 00000000753ff000 C:\WINDOWS\SysWOW64\USER32.dll ModLoad: 00000000
75090000 0000000075198000 C:\WINDOWS\SysWOW64\GDI32.dll ModLoad: 00000000
75490000 0000000075507000 C:\WINDOWS\SysWOW64\ADVAPI32.dll ModLoad: 00000000
755b0000 0000000076753000 C:\WINDOWS\SysWOW64\SHELL32.dll ModLoad: 00000000
76a70000 0000000076b7b000 C:\WINDOWS\SysWOW64\ole32.dll ModLoad: 00000000
751f0000 00000000752a1000 C:\WINDOWS\SysWOW64\RPCRT4.dll ModLoad: 00000000
1e000000 000000001e218000 C:\Program Files (x86)\XBMC\python26.dll ModLoad: 00000000
61bc0000 0000000061c74000 C:\Program Files (x86)\XBMC\libcdio-13.dll ModLoad: 00000000
6eab0000 000000006ec68000 C:\WINDOWS\SysWOW64\d3d9.dll ModLoad: 00000000
772c0000 000000007730d000 C:\WINDOWS\SysWOW64\WS2_32.dll ModLoad: 00000000
77310000 00000000773ce000 C:\WINDOWS\SysWOW64\msvcrt.dll ModLoad: 00000000
74a50000 0000000074a70000 C:\WINDOWS\SysWOW64\WINMMBASE.dll ModLoad: 00000000
77040000 0000000077047000 C:\WINDOWS\SysWOW64\NSI.dll ModLoad: 00000000
74a40000 0000000074a48000 C:\WINDOWS\SysWOW64\WINNSI.DLL ModLoad: 00000000
77280000 00000000772ba000 C:\WINDOWS\SysWOW64\CFGMGR32.dll ModLoad: 00000000
75570000 00000000755ae000 C:\WINDOWS\SysWOW64\sechost.dll ModLoad: 00000000
76910000 0000000076a5e000 C:\WINDOWS\SysWOW64\combase.dll ModLoad: 00000000
770d0000 0000000077111000 C:\WINDOWS\SysWOW64\SHLWAPI.dll ModLoad: 00000000
75070000 000000007508d000 C:\WINDOWS\SysWOW64\SspiCli.dll ModLoad: 00000000
74990000 0000000074a33000 C:\WINDOWS\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.8387_none_5094ca96bcb6b2bb\MSVCR90.dll ModLoad: 00000000
66000000 0000000066102000 C:\Program Files (x86)\XBMC\libiconv-2.dll ModLoad: 00000000
74980000 0000000074988000 C:\WINDOWS\SysWOW64\VERSION.dll ModLoad: 00000000
74960000 0000000074979000 C:\WINDOWS\SysWOW64\dwmapi.dll ModLoad: 00000000
74940000 000000007495f000 C:\WINDOWS\SysWOW64\DEVOBJ.dll ModLoad: 00000000
75060000 0000000075069000 C:\WINDOWS\SysWOW64\CRYPTBASE.dll ModLoad: 00000000
75000000 0000000075051000 C:\WINDOWS\SysWOW64\bcryptPrimitives.dll (1bc4.1d2c): WOW64 breakpoint - code 4000001f (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - ntdll_77640000!LdrResolveDelayLoadsFromDll+0xa8c: 776f2645 cc int 3 0:000:x86> g ModLoad: 76ef0000 76f15000 C:\WINDOWS\SysWOW64\IMM32.DLL ModLoad: 76df0000 76ee7000 C:\WINDOWS\SysWOW64\MSCTF.dll ModLoad: 74930000 74939000 C:\WINDOWS\SysWOW64\kernel.appcore.dll ModLoad: 74910000 74923000 C:\WINDOWS\SysWOW64\dhcpcsvc.DLL ModLoad: 74890000 74907000 C:\WINDOWS\SysWOW64\SHCORE.dll ModLoad: 74880000 7488e000 C:\WINDOWS\SysWOW64\profapi.dll ModLoad: 747a0000 7487c000 C:\WINDOWS\SysWOW64\uxtheme.dll ModLoad: 74790000 747a0000 C:\WINDOWS\SysWOW64\napinsp.dll ModLoad: 74770000 74784000 C:\WINDOWS\SysWOW64\pnrpnsp.dll ModLoad: 74750000 74762000 C:\WINDOWS\SysWOW64\NLAapi.dll ModLoad: 74700000 74745000 C:\WINDOWS\SysWOW64\mswsock.dll ModLoad: 74680000 746fc000 C:\WINDOWS\SysWOW64\DNSAPI.dll ModLoad: 74670000 74679000 C:\WINDOWS\SysWOW64\winrnr.dll ModLoad: 74660000 7466f000 C:\WINDOWS\SysWOW64\wshbth.dll ModLoad: 77050000 770cd000 C:\WINDOWS\SysWOW64\clbcatq.dll ModLoad: 714a0000 714e8000 C:\WINDOWS\SysWOW64\MMDevApi.dll ModLoad: 714f0000 71545000 C:\WINDOWS\SysWOW64\AUDIOSES.DLL ModLoad: 75400000 75487000 C:\WINDOWS\SysWOW64\OLEAUT32.dll ModLoad: 60900000 60989000 C:\Program Files (x86)\XBMC\system\sqlite3.dll ModLoad: 6e9c0000 6e9d3000 C:\Program Files (x86)\XBMC\system\cpluff.dll ModLoad: 68f40000 68f63000 C:\Program Files (x86)\XBMC\system\libexpat.dll ModLoad: 66480000 6653f000 C:\WINDOWS\SysWOW64\MSVCR100.dll ModLoad: 00000000
74a70000 0000000074a79000 C:\WINDOWS\SysWOW64\avrt.dll ModLoad: 00000000
5f450000 000000005f489000 C:\Program Files (x86)\XBMC\system\libcec.dll ModLoad: 00000000
66540000 00000000665a9000 C:\WINDOWS\SysWOW64\MSVCP100.dll ModLoad: 00000000
751a0000 00000000751d9000 C:\WINDOWS\SysWOW64\WINTRUST.dll ModLoad: 00000000
76b80000 0000000076cff000 C:\WINDOWS\SysWOW64\CRYPT32.dll ModLoad: 00000000
773d0000 00000000773de000 C:\WINDOWS\SysWOW64\MSASN1.dll ModLoad: 742a0000 742a7000 C:\Windows\SysWOW64\rasadhlp.dll ModLoad: 73a50000 73a94000 C:\WINDOWS\SysWOW64\fwpuclnt.dll ModLoad: 74f90000 74ffb000 C:\Program Files (x86)\Common Files\microsoft shared\ink\tiptsf.dll ModLoad: 68ea0000 68ea4000 C:\WINDOWS\SysWOW64\KBDUS.DLL ModLoad: 00000000
68ea0000 0000000068ea4000 C:\WINDOWS\SysWOW64\KBDUK.DLL ModLoad: 00000000
683e0000 0000000068e7d000 C:\WINDOWS\SysWOW64\igdumd32.dll ModLoad: 00000000
5f350000 000000005f450000 C:\Program Files (x86)\XBMC\system\ImageLib.dll ModLoad: 00000000
6b240000 000000006b2d6000 C:\Program Files (x86)\XBMC\system\libcurl.dll ModLoad: 00000000
773e0000 000000007742b000 C:\WINDOWS\SysWOW64\wldap32.dll ModLoad: 00000000
69540000 0000000069585000 C:\Program Files (x86)\XBMC\system\libidn-11.dll ModLoad: 00000000
61d80000 0000000061ea9000 C:\Program Files (x86)\XBMC\system\libeay32.dll ModLoad: 00000000
6b080000 000000006b0c3000 C:\Program Files (x86)\XBMC\system\libssl32.dll ModLoad: 00000000
66470000 0000000066478000 C:\WINDOWS\SysWOW64\WSOCK32.DLL ModLoad: 00000000
743b0000 00000000743b9000 C:\WINDOWS\SysWOW64\secur32.dll ModLoad: 00000000
5f190000 000000005f34a000 C:\Program Files (x86)\XBMC\system\libsamplerate-0.dll ModLoad: 00000000
68ea0000 0000000068eaa000 C:\WINDOWS\SysWOW64\HID.DLL ModLoad: 00000000
065a0000 00000000065ac000 C:\Program Files (x86)\XBMC\system\python\DLLs\_socket.pyd ModLoad: 00000000
10000000 00000000100b4000 C:\Program Files (x86)\XBMC\system\python\DLLs\_ssl.pyd ModLoad: 00000000
1d120000 000000001d1b2000 C:\Program Files (x86)\XBMC\system\python\DLLs\unicodedata.pyd ModLoad: 00000000
092d0000 000000000931a000 C:\Program Files (x86)\XBMC\system\python\DLLs\_hashlib.pyd ModLoad: 00000000
74270000 0000000074288000 C:\WINDOWS\SysWOW64\CRYPTSP.dll ModLoad: 00000000
74240000 000000007426f000 C:\WINDOWS\SysWOW64\rsaenh.dll ModLoad: 00000000
74220000 00000000`7423d000 C:\WINDOWS\SysWOW64\bcrypt.dllSTATUS_STACK_BUFFER_OVERRUN encountered
(1bc4.fa8): WOW64 breakpoint - code 4000001f (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\SysWOW64\KERNELBASE.dll -
*** ERROR: Module load completed but symbols could not be loaded for XBMC.exe
KERNELBASE!UnhandledExceptionFilter+0x5a:
76db9375 cc int 3
0:015:x86> g
XBMC+0x64d19e:
0070d19e 33c0 xor eax,eax
Client platform is Win8.1 64-bit - nothing really odd.
Server platform is Xubuntu 12.04 exporting a ZFS pool as follows:
ian@Server:~$ ldconfig -v | grep nfs
...
libnfs.so.1 -> libnfs.so.1.0.3
libnfsidmap.so.0 -> libnfsidmap.so.0.3.0
ian@Server:$ uname -aprecise1-Ubuntu SMP Thu Oct 24 14:52:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Linux Server 3.5.0-43-generic #66
ian@Server:$ ian@Server:$ mount
...
vol0 on /vol0 type zfs (rw)
...
/vol0 on /export/vol0 type none (rw,bind)
Let me know what else I can add.
Cheers,
If libnfs makes a call that will modify the mtime of the directory, then use the wcc field and see if it is possible to just update the localm directory cache as well instead of just discaridng the cache.
Have you considered adding support for NFSv4 (rfc3530)? If you've given it some thought I'd be interested to hear about it. If you haven't given it some thought, I might have a whack at it :).
Right now we copy the copy the content of the write buffer we get from the application in nfs_write and nfs_pwrite calls several times and even pass it through marshalling.
To address this we would need to do several changes.
1, First we should get rid of pdu->outdata.data and use a (single entry) iovector and change the routines to queue a PDU to populate the vector.
This mainly involves rpc_write_to_socket() to make it write from a iovector and use writev instead of send and it involves the functions where we queue the PDU which is where we have to prepare a iovector instead of a outdata.data buffer.
PDU cleanup/free functions need work too.
2, Second we need to create a new low level function for marshalling the WRITE3 PDU, that would marshall everything up to and including the byte count for the data we pass. Then the nfs_write() functions need to be switched to use this new function instead of the existing function. This will create an iovector (see above) that contain the first part of the write packet up to and including the length.
Then we append the write buffer as the second entry in the iovector.
3, Add support for the [p]writev() functions.
This should be fairly straightforward once we have finished step 2 above.
No other functions than WRITE3 need vector support.
This should provide us with a write path where we do not copy the application data at all inside libnfs. It will allow passing the pointer to the application buffer all the way until we pass it to the kernel via the iovector.
Following advice from @Memphiz in this thread:
http://forum.xbmc.org/showthread.php?tid=182638
There's an issue here somewhere with lbnfs and Windows Frodo 12.3 and Gotham nightlies following the libnfs bump to 1.6 (1.6.2 in the Gotham nightlies).
Details:
Server Win 7 64 bit running Hanewin nfs server 1.2.14
Client Win 7 64 bit running Gotham nightly 16-01-2014
Wireshark trace is full of:
51 0.051972000 192.168.1.51 192.168.1.12 NFS 174 V3 LOOKUP Reply (Call In 50) Error: NFS3ERR_NOENT
....whereas a Frodo 12.2 install on same machine has no NFS errors. I don't see other NFS errors as such, but I don't really know what I am looking for in the surrounding frames.
It's most noticeable when running a 'clean library' - basically it fails to find pretty much all files and dumps the whole library.
I was not able to reproduce the errors consistently with a mockup small library, so I am sorry these are large.
Happy to help in anyway I can to debug.
With a limited performance device like the Raspberry Pi, where playing a raw bluay is only just possible, it's important that the nfs throughput is as high as possible.
There is a lot of evidence that using an OS NFS mount makes a lot more streams playable on the Pi compared to libnfs. E.g.
http://forum.kodi.tv/showthread.php?tid=154279
http://forum.osmc.tv/showthread.php?tid=6825
Something like:
mount 192.168.4.9:/Public -o nfsvers=3,rw,intr,noatime,rsize=32768,wsize=32768,nolock,async,proto=udp /storage/mnt
works much better. I think UDP is the most significant change, but being able to configure larger block sizes also helps.
Would this be possible?
make[2]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/profiles/dialogs'
make[2]: Entering directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/pvr/dialogs'
CPP xbmc/pvr/dialogs/GUIDialogPVRChannelManager.o
In file included from NFSFile.cpp:35:0:
/usr/include/nfsc/libnfs-raw-mount.h:150:38: error: 'CLIENT' has not been declared
extern void * mount1_null_1(void , CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:153:45: error: 'CLIENT' has not been declared
extern mountres1 * mount1_mnt_1(dirpath *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:156:43: error: 'CLIENT' has not been declared
extern mountlist * mount1_dump_1(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:159:41: error: 'CLIENT' has not been declared
extern void * mount1_umnt_1(dirpath *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:162:41: error: 'CLIENT' has not been declared
extern void * mount1_umntall_1(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:165:43: error: 'CLIENT' has not been declared
extern exports * mount1_export_1(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:167:40: error: 'SVCXPRT' was not declared in this scope
extern int mount_program_1_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:167:49: error: expected primary-expression before ',' token
extern int mount_program_1_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:167:51: error: 'zdrproc_t' was not declared in this scope
extern int mount_program_1_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:167:69: error: expected primary-expression before ')' token
extern int mount_program_1_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:167:69: error: expression list treated as compound expression in initializer [-fpermissive]
/usr/include/nfsc/libnfs-raw-mount.h:194:38: error: 'CLIENT' has not been declared
extern void * mount3_null_3(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:197:45: error: 'CLIENT' has not been declared
extern mountres3 * mount3_mnt_3(dirpath *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:200:43: error: 'CLIENT' has not been declared
extern mountlist * mount3_dump_3(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:203:41: error: 'CLIENT' has not been declared
extern void * mount3_umnt_3(dirpath *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:206:41: error: 'CLIENT' has not been declared
extern void * mount3_umntall_3(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:209:43: error: 'CLIENT' has not been declared
extern exports * mount3_export_3(void *, CLIENT *);
^
/usr/include/nfsc/libnfs-raw-mount.h:211:40: error: 'SVCXPRT' was not declared in this scope
extern int mount_program_3_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:211:49: error: expected primary-expression before ',' token
extern int mount_program_3_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:211:51: error: 'zdrproc_t' was not declared in this scope
extern int mount_program_3_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:211:69: error: expected primary-expression before ')' token
extern int mount_program_3_freeresult (SVCXPRT *, zdrproc_t, caddr_t);
^
/usr/include/nfsc/libnfs-raw-mount.h:211:69: error: expression list treated as compound expression in initializer [-fpermissive]
/usr/include/nfsc/libnfs-raw-mount.h:238:9: error: 'bool_t' does not name a type
extern bool_t zdr_fhandle3 (ZDR *, fhandle3);
^
/usr/include/nfsc/libnfs-raw-mount.h:239:9: error: 'bool_t' does not name a type
extern bool_t zdr_dirpath (ZDR , dirpath);
^
/usr/include/nfsc/libnfs-raw-mount.h:240:9: error: 'bool_t' does not name a type
extern bool_t zdr_name (ZDR , name);
^
/usr/include/nfsc/libnfs-raw-mount.h:241:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountstat3 (ZDR , mountstat3);
^
/usr/include/nfsc/libnfs-raw-mount.h:242:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountlist (ZDR , mountlist);
^
/usr/include/nfsc/libnfs-raw-mount.h:243:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountbody (ZDR , mountbody);
^
/usr/include/nfsc/libnfs-raw-mount.h:244:9: error: 'bool_t' does not name a type
extern bool_t zdr_groups (ZDR , groups);
^
/usr/include/nfsc/libnfs-raw-mount.h:245:9: error: 'bool_t' does not name a type
extern bool_t zdr_groupnode (ZDR , groupnode);
^
/usr/include/nfsc/libnfs-raw-mount.h:246:9: error: 'bool_t' does not name a type
extern bool_t zdr_exports (ZDR , exports);
^
/usr/include/nfsc/libnfs-raw-mount.h:247:9: error: 'bool_t' does not name a type
extern bool_t zdr_exportnode (ZDR , exportnode);
^
/usr/include/nfsc/libnfs-raw-mount.h:248:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountres3_ok (ZDR , mountres3_ok);
^
/usr/include/nfsc/libnfs-raw-mount.h:249:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountres3 (ZDR , mountres3);
^
/usr/include/nfsc/libnfs-raw-mount.h:250:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountstat1 (ZDR , mountstat1);
^
/usr/include/nfsc/libnfs-raw-mount.h:251:9: error: 'bool_t' does not name a type
extern bool_t zdr_fhandle1 (ZDR , fhandle1);
^
/usr/include/nfsc/libnfs-raw-mount.h:252:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountres1_ok (ZDR *, mountres1_ok);
^
/usr/include/nfsc/libnfs-raw-mount.h:253:9: error: 'bool_t' does not name a type
extern bool_t zdr_mountres1 (ZDR , mountres1);
^
/tmp/buildd/xbmc-13.1+dfsg1/Makefile.include:95: recipe for target 'NFSFile.o' failed
make[2]: *** [NFSFile.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Entering directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/pvr'
CPP xbmc/pvr/PVRGUIInfo.o
CPP xbmc/pvr/channels/PVRChannelGroup.o
make[2]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/filesystem'
Makefile:505: recipe for target 'xbmc/filesystem/filesystem.a' failed
make[1]: *** [xbmc/filesystem/filesystem.a] Error 2
make[1]: *** Waiting for unfinished jobs....
CPP xbmc/pvr/channels/PVRChannelGroupInternal.o
CPP xbmc/pvr/PVRManager.o
CPP xbmc/pvr/channels/PVRChannelGroups.o
CPP xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.o
CPP xbmc/pvr/PVRDatabase.o
CPP xbmc/pvr/dialogs/GUIDialogPVRCutterOSD.o
CPP xbmc/pvr/dialogs/GUIDialogPVRDirectorOSD.o
CPP xbmc/pvr/channels/PVRChannelGroupsContainer.o
CPP xbmc/pvr/dialogs/GUIDialogPVRGroupManager.o
CPP xbmc/pvr/dialogs/GUIDialogPVRGuideInfo.o
CPP xbmc/pvr/dialogs/GUIDialogPVRGuideOSD.o
AR xbmc/pvr/channels/pvrchannels.a
make[2]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/pvr/channels'
CPP xbmc/pvr/dialogs/GUIDialogPVRGuideSearch.o
AR xbmc/pvr/pvr.a
make[2]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/pvr'
CPP xbmc/pvr/dialogs/GUIDialogPVRRecordingInfo.o
CPP xbmc/pvr/dialogs/GUIDialogPVRTimerSettings.o
AR xbmc/pvr/dialogs/pvrdialogs.a
make[2]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1/xbmc/pvr/dialogs'
make[1]: Leaving directory '/tmp/buildd/xbmc-13.1+dfsg1'
dh_auto_build: make -j4 returned exit code 2
debian/rules:102: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
E: Failed autobuilding of package
I: unmounting /var/cache/apt/archives/ filesystem
I: unmounting dev/pts filesystem
I: unmounting run/shm filesystem
I: unmounting proc filesystem
I: cleaning the build env
I: removing directory /tmp/24021 and its subdirectories
gbp:error: '/home/rrs/bin/gbp-pbuilder' failed: it exited with 1
The Debian Bug is at: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753427
NFS protocol does not allow a command to traverse across a filesystem boundary.
A consequence of this is that if a server exports two filesystems
/data
and
/data/foo
then the client need to mount them both too since a lookup on foo in the /data directory would result in an object in a different filesystem and thus would not be permitted.
Instead of having the client having to track all sub exports and explicitely jump between mounts when traversing a filesystem tree, we should and can do these special mount handling internally inside libnfs.
This would make using libnfs much more conveneint for consumers when nested mounts are present.
Hi,
I noticed recently that my raspberry pi started systematically crashing after only a few minutes of playback. With a bit of research I pinpointed it to the newly upgraded libnfs, from 1.6 to 1.7.
Downgrading the package fixed the issue. If you need me to bissect the problematic commit or anything else, please let me know.
edit: Maybe this one is the problem ? dd97d43
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.