deb_libnfs.git
10 years agotypes: remove the [u_]quad type and replace with [u]int64
Ronnie Sahlberg [Sat, 16 Aug 2014 21:51:53 +0000 (14:51 -0700)] 
types: remove the [u_]quad type and replace with [u]int64

All current platforms have a quad type that maps to a 64bit scalar.
But there are platforms where quad maps to a 64bit non-scalar.

Replace quad with int64 in the protocol definitions and the ZDR layer
so that these fields will map to a 64 bit scalar also on those platforms
where quad can not be used.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoMerge pull request #99 from mheijkoop/fuse-nfs-usage
Ronnie Sahlberg [Sat, 16 Aug 2014 21:37:53 +0000 (14:37 -0700)] 
Merge pull request #99 from mheijkoop/fuse-nfs-usage

Fix help message for fuse_nfs example

10 years agoPrint usage when missing mandatory arguments
Marlies Heijkoop [Sat, 16 Aug 2014 14:38:25 +0000 (16:38 +0200)] 
Print usage when missing mandatory arguments

10 years agoFix usage message to match expected arguments
Marlies Heijkoop [Sat, 16 Aug 2014 14:26:17 +0000 (16:26 +0200)] 
Fix usage message to match expected arguments

10 years agofix linebreak in README
Ronnie Sahlberg [Fri, 15 Aug 2014 02:05:28 +0000 (19:05 -0700)] 
fix linebreak in README

10 years agosocket.c: we need netinet/in.h on some platforms
Ronnie Sahlberg [Fri, 15 Aug 2014 01:56:39 +0000 (18:56 -0700)] 
socket.c: we need netinet/in.h on some platforms

10 years agoMerge pull request #97 from rosslagerwall/read-close-crash
Ronnie Sahlberg [Mon, 11 Aug 2014 13:15:16 +0000 (06:15 -0700)] 
Merge pull request #97 from rosslagerwall/read-close-crash

libnfs: Don't perform operations on nfsfh after user callback

10 years agoMerge pull request #96 from rosslagerwall/enotempty
Ronnie Sahlberg [Mon, 11 Aug 2014 13:14:16 +0000 (06:14 -0700)] 
Merge pull request #96 from rosslagerwall/enotempty

Map NFS3ERR_NOTEMPTY to ENOTEMPTY

10 years agofix implicit decls of rpc_{g,s}et_error
Mike Frysinger [Fri, 8 Aug 2014 09:45:32 +0000 (05:45 -0400)] 
fix implicit decls of rpc_{g,s}et_error

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
10 years agofix typo in chmod funcs
Mike Frysinger [Fri, 8 Aug 2014 09:40:37 +0000 (05:40 -0400)] 
fix typo in chmod funcs

These were accidentally calling chown instead of chmod.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
10 years agofix implicit decl warnings
Mike Frysinger [Tue, 4 Dec 2012 03:30:04 +0000 (22:30 -0500)] 
fix implicit decl warnings

Include the proper headers to fix warnings like:
libnfs-sync.c:1529:3: warning: implicit declaration of function 'gettimeofday' [-Wimplicit-function-declaration]
libnfs-zdr.c:506:2: warning: implicit declaration of function 'getuid' [-Wimplicit-function-declaration]

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sys/time.h needs to be protected with an ifdef

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agolibnfs: Don't perform operations on nfsfh after user callback
Ross Lagerwall [Sun, 10 Aug 2014 11:16:47 +0000 (12:16 +0100)] 
libnfs: Don't perform operations on nfsfh after user callback

Since the user callback may perform operations on the nfsfh (e.g. it
might close it), all updates should be done before the user callback is
called.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agoMap NFS3ERR_NOTEMPTY to ENOTEMPTY
Ross Lagerwall [Fri, 8 Aug 2014 19:14:44 +0000 (20:14 +0100)] 
Map NFS3ERR_NOTEMPTY to ENOTEMPTY

Map NFS3ERR_NOTEMPTY to ENOTEMPTY rather than EEXIST.  POSIX allows
either EEXIST or ENOTEMPTY for rmdir on a non-empty directory but
ENOTEMPTY is more explicit and in line with Linux, OS X, FreeBSD and
OpenBSD's behavior.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs: Fix segfault if O_TRUNC fails when creating
Ross Lagerwall [Thu, 7 Aug 2014 19:45:08 +0000 (20:45 +0100)] 
libnfs: Fix segfault if O_TRUNC fails when creating

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agoMerge pull request #92 from rosslagerwall/symlink-resolution
Ronnie Sahlberg [Sat, 2 Aug 2014 15:03:45 +0000 (08:03 -0700)] 
Merge pull request #92 from rosslagerwall/symlink-resolution

Follow symlinks during path resolution

10 years agolibnfs: Add lchmod
Ross Lagerwall [Sun, 27 Jul 2014 20:21:18 +0000 (21:21 +0100)] 
libnfs: Add lchmod

Add lchmod which is like chmod but operates on the symbolic link itself
if the destination is a symbolic link.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs: Add lutimes
Ross Lagerwall [Sun, 27 Jul 2014 20:16:01 +0000 (21:16 +0100)] 
libnfs: Add lutimes

Add lutimes which is like utimes but operates on the symbolic link
itself if the destination is a symbolic link.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs: Add lstat
Ross Lagerwall [Sun, 27 Jul 2014 20:00:26 +0000 (21:00 +0100)] 
libnfs: Add lstat

Add lstat which is like stat but operates on the symbolic link itself if
the destination is a symbolic link.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs: Add lchown
Ross Lagerwall [Sun, 27 Jul 2014 19:21:33 +0000 (20:21 +0100)] 
libnfs: Add lchown

Add lchown which is like chown but operates on the symbolic link itself
if the destination is a symbolic link.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs.c: Follow symlinks during path resolution
Ross Lagerwall [Sun, 27 Jul 2014 17:01:25 +0000 (18:01 +0100)] 
libnfs.c: Follow symlinks during path resolution

Follow symlinks during path resolution.  If the symlink points outside
the mount, -ENOENT is returned.  This is slightly different behavior
from the in-kernel NFS client where symlinks pointing outside the mount
get resolved to local paths.

The algorithm for symlink resolution is simple and stupid.  If a symlink
is encountered, the path is rewritten and path resolution begins again
from the root filehandle.  A count is kept to prevent loops.  This is
not particularly efficient but it is good enough for now.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs.c: Fix a warning
Ross Lagerwall [Sun, 27 Jul 2014 17:06:12 +0000 (18:06 +0100)] 
libnfs.c: Fix a warning

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agoMerge pull request #90 from rosslagerwall/stat-improvements
Ronnie Sahlberg [Thu, 24 Jul 2014 00:30:13 +0000 (17:30 -0700)] 
Merge pull request #90 from rosslagerwall/stat-improvements

Stat improvements

10 years agolibnfs: Add fstat64, analagous to stat64
Ross Lagerwall [Sun, 20 Jul 2014 22:12:59 +0000 (23:12 +0100)] 
libnfs: Add fstat64, analagous to stat64

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs: Set as much stat information as possible
Ross Lagerwall [Sun, 20 Jul 2014 20:39:06 +0000 (21:39 +0100)] 
libnfs: Set as much stat information as possible

Set as much stat information as possible for stat, stat64, fstat and
readdir.

Fill in dev to the given fsid.
Fill in rdev to the given major and minor numbers.
Set the file type bits in the mode from the type returned by the server.
Set the number of blocks used based on the number of bytes used in
blocks of size 512 (which is what stat(2) uses), rounded up.
Fill in the nanosecond timestamps.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agoMerge pull request #89 from rosslagerwall/create-trunc
Ronnie Sahlberg [Sun, 20 Jul 2014 18:13:04 +0000 (11:13 -0700)] 
Merge pull request #89 from rosslagerwall/create-trunc

Support use of O_TRUNC with nfs_create

10 years agolibnfs.h: Update open() flags docs
Ross Lagerwall [Sun, 20 Jul 2014 07:18:06 +0000 (08:18 +0100)] 
libnfs.h: Update open() flags docs

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs.c: Handle OOM condition
Ross Lagerwall [Sun, 20 Jul 2014 07:13:45 +0000 (08:13 +0100)] 
libnfs.c: Handle OOM condition

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs.c: Support use of O_TRUNC with nfs_create
Ross Lagerwall [Sun, 20 Jul 2014 07:07:46 +0000 (08:07 +0100)] 
libnfs.c: Support use of O_TRUNC with nfs_create

Simplify usage for application programmers by supporting the use of
O_TRUNC with nfs_create.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agoMerge pull request #88 from rosslagerwall/76-no-autoreconnect
Ronnie Sahlberg [Sat, 19 Jul 2014 23:01:13 +0000 (16:01 -0700)] 
Merge pull request #88 from rosslagerwall/76-no-autoreconnect

libnfs.c: Fix autoreconnect

10 years agoMerge pull request #86 from rosslagerwall/75-create
Ronnie Sahlberg [Sat, 19 Jul 2014 22:58:30 +0000 (15:58 -0700)] 
Merge pull request #86 from rosslagerwall/75-create

libnfs.c: add nfs_create

10 years agoMerge pull request #87 from rbalint/master
Ronnie Sahlberg [Sat, 19 Jul 2014 22:56:59 +0000 (15:56 -0700)] 
Merge pull request #87 from rbalint/master

Use sockaddr_in6 on FreeBSD

10 years agoNew version 1.9.5
Ronnie Sahlberg [Sat, 19 Jul 2014 22:47:35 +0000 (15:47 -0700)] 
New version 1.9.5

This version removes old ONC-RPC symbols and automatically includes the
RPC/ZDR layer include from the raw low level headers.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoUse sockaddr_in6 instead of sockaddr6_in
Petr Salinger [Fri, 18 Jul 2014 23:14:43 +0000 (01:14 +0200)] 
Use sockaddr_in6 instead of sockaddr6_in

10 years agolibnfs.c: Fix autoreconnect
Ross Lagerwall [Sat, 19 Jul 2014 10:32:40 +0000 (11:32 +0100)] 
libnfs.c: Fix autoreconnect

Since rpc_connect_async sets autoreconnect to 0, turn autoreconnect on
after the connection has completed, not before.

This fixes #76.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
10 years agolibnfs.c: add nfs_create
Ross Lagerwall [Thu, 17 Jul 2014 21:31:23 +0000 (22:31 +0100)] 
libnfs.c: add nfs_create

Add a new family of functions, nfs_create, like nfs_creat but takes an
additional flags argument which allows extra flags like O_SYNC, O_EXCL
and O_APPEND to be specified.

10 years agoRPC: include libnfs-zdr.h from all raw libnfs-raw-*.h files
Ronnie Sahlberg [Sun, 13 Jul 2014 22:36:59 +0000 (15:36 -0700)] 
RPC: include libnfs-zdr.h from all raw libnfs-raw-*.h files

Include the zdr header from all raw lowlevel headers so that we don't have to
include it manually from apps.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoMerge pull request #85 from rsahlberg/remove-zhr.h-dependency
Ronnie Sahlberg [Sun, 13 Jul 2014 22:20:09 +0000 (15:20 -0700)] 
Merge pull request #85 from rsahlberg/remove-zhr.h-dependency

Remove zhr.h dependency

10 years agoZDR: remove dependency on zdr.h from the examples and nfs-ls
Ronnie Sahlberg [Sat, 5 Jul 2014 19:44:18 +0000 (12:44 -0700)] 
ZDR: remove dependency on zdr.h from the examples and nfs-ls

Signed-off-by: Ronnie Sahlberg <sahlberg@localhost>
10 years agoRPC: get rid of bool_t
Ronnie Sahlberg [Sat, 5 Jul 2014 16:07:23 +0000 (09:07 -0700)] 
RPC: get rid of bool_t

Signed-off-by: Ronnie Sahlberg <sahlberg@localhost>
10 years agoRPC: get rid of references to SCVXPRT
Ronnie Sahlberg [Sat, 5 Jul 2014 15:52:46 +0000 (08:52 -0700)] 
RPC: get rid of references to SCVXPRT

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoRPC: get rid of all references to CLIENT
Ronnie Sahlberg [Sat, 5 Jul 2014 15:45:45 +0000 (08:45 -0700)] 
RPC: get rid of all references to CLIENT

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoNew version 1.9.4
Ronnie Sahlberg [Sun, 29 Jun 2014 21:57:45 +0000 (14:57 -0700)] 
New version 1.9.4

New version of libnfs:

- IPv6 support
- Support for Portmapper version 3 and an example portmap client.
- Directory caching top make repeated opendir() calls faster
- Readahead support
- Build manpages for the utilities (==nfs-ls)
- Support for O_APPEND
- Rename the list macros to avoid collission on *BSD

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agolibnfs.c: Change the directory cache to a smaller more reasonable value
Ronnie Sahlberg [Sun, 29 Jun 2014 21:42:28 +0000 (14:42 -0700)] 
libnfs.c: Change the directory cache to a smaller more reasonable value

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoMerge pull request #82 from plieven/readahead
Ronnie Sahlberg [Sun, 29 Jun 2014 21:41:28 +0000 (14:41 -0700)] 
Merge pull request #82 from plieven/readahead

add readahead support

10 years agoadd readahead support
Peter Lieven [Mon, 23 Jun 2014 14:31:32 +0000 (16:31 +0200)] 
add readahead support

This patch add support for an internal readahead machanism. The maximum readahead
size can be specified via URL parameter readahead. This should significantly
speed up small sequential reads.

Signed-off-by: Peter Lieven <pl@kamp.de>
10 years agoupdate copyright bilerplates also in generated files
Ronnie Sahlberg [Sat, 14 Jun 2014 00:03:35 +0000 (17:03 -0700)] 
update copyright bilerplates also in generated files

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agolibnfs.c: add nlink to nfsdirent so we can get it for 'free'
Ronnie Sahlberg [Sun, 8 Jun 2014 18:40:35 +0000 (11:40 -0700)] 
libnfs.c: add nlink to nfsdirent so we can get it for 'free'

update the nfs-ls utility to just use nfsdirent as is instead of having to
stat the files.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agolibnfs.c: add a simple dircache to libnfs
Ronnie Sahlberg [Sun, 8 Jun 2014 18:22:06 +0000 (11:22 -0700)] 
libnfs.c: add a simple dircache to libnfs

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agolibnfs.c: always pass the attributes to the callback for recursive lookups
Ronnie Sahlberg [Sun, 8 Jun 2014 16:45:22 +0000 (09:45 -0700)] 
libnfs.c: always pass the attributes to the callback for recursive lookups

Always pass a fattr3 structure to the callbacks for the internal function
to perform recursive lookups : nfs_lookuppath_async().
This will allow us to access for example the mtime for an object before we
start performing any expensive functions.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agowin32_errnowrapper.h: add licence boilerplate
Ronnie Sahlberg [Sun, 8 Jun 2014 14:54:45 +0000 (07:54 -0700)] 
win32_errnowrapper.h: add licence boilerplate

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoaros: add licence to aros_compat.h
Ronnie Sahlberg [Sun, 8 Jun 2014 14:53:03 +0000 (07:53 -0700)] 
aros: add licence to aros_compat.h

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoproto files: add a simplified bsd licence to the dot-x files
Ronnie Sahlberg [Sun, 8 Jun 2014 14:51:38 +0000 (07:51 -0700)] 
proto files: add a simplified bsd licence to the dot-x files

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoinit.c: fixup the mangled lgplv2.1 boilerplate
Ronnie Sahlberg [Sun, 8 Jun 2014 14:34:54 +0000 (07:34 -0700)] 
init.c: fixup the mangled lgplv2.1 boilerplate

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoinit.c: use list macro when removing pdus from the wait list
Ronnie Sahlberg [Sun, 8 Jun 2014 14:21:43 +0000 (07:21 -0700)] 
init.c: use list macro when removing pdus from the wait list

Use the macro when removing the pdus in the wait list from the queues.
Also make sure to remove them from the right queue, from waitqueue and not
the outqueue for PDUs we have already sent out.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoMerge pull request #79 from plieven/readahead
Ronnie Sahlberg [Sun, 8 Jun 2014 13:33:09 +0000 (06:33 -0700)] 
Merge pull request #79 from plieven/readahead

socket: fix broken connect for non broadcast traffic

10 years agosocket: fix broken connect for non broadcast traffic
Peter Lieven [Sun, 8 Jun 2014 12:20:12 +0000 (14:20 +0200)] 
socket: fix broken connect for non broadcast traffic

commit 1c1e09a completely broke connects for non broadcast
traffic since it forgot to copy the server address into
the socket_storage struct.

Signed-off-by: Peter Lieven <pl@kamp.de>
10 years agoslist.h: Change SLIST_* to LIBNFS_LIST_* to avoid name clash on *BSD
Ronnie Sahlberg [Thu, 15 May 2014 02:11:03 +0000 (19:11 -0700)] 
slist.h: Change SLIST_* to LIBNFS_LIST_* to avoid name clash on *BSD

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agodocs: add a prebuilt manpage to the distribution
Ronnie Sahlberg [Thu, 15 May 2014 02:04:43 +0000 (19:04 -0700)] 
docs: add a prebuilt manpage to the distribution

Add a prebuilt manpage for nfs-ls and change the makefiles to not build the
manpage by default. This is because the manpages change rarely and this removes
the need for an internet connection when building the library.
(previously building the library required downloading a template from
sourceforge)

Update the README and mention that you now need to manually rebuild the
manpages if the manpage sources change.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
10 years agoMerge pull request #74 from alexsn/master
Ronnie Sahlberg [Sat, 19 Apr 2014 18:38:11 +0000 (11:38 -0700)] 
Merge pull request #74 from alexsn/master

nfs-ls: Fix crash when called with no arguments

10 years agonfs-ls: Fix crash when called with no arguments
Alex Snast [Sat, 19 Apr 2014 16:30:43 +0000 (19:30 +0300)] 
nfs-ls: Fix crash when called with no arguments

When called with no argument we jump to 'finished' label
after which nfs_destroy_url is called with *url having
some garbage stack value.

10 years agonfs_open: add support for O_APPEND
Ronnie Sahlberg [Fri, 18 Apr 2014 16:32:01 +0000 (09:32 -0700)] 
nfs_open: add support for O_APPEND

10 years agoMerge branch 'xid-hash'
Ronnie Sahlberg [Fri, 11 Apr 2014 02:59:28 +0000 (19:59 -0700)] 
Merge branch 'xid-hash'

10 years agoMerge pull request #71 from Memphiz/nolinger
Ronnie Sahlberg [Fri, 11 Apr 2014 01:21:13 +0000 (18:21 -0700)] 
Merge pull request #71 from Memphiz/nolinger

[socket] - disable linger by setting SO_LINGER to 0 seconds

10 years agoMerge pull request #72 from Memphiz/fixosxcompile
Ronnie Sahlberg [Fri, 11 Apr 2014 01:20:52 +0000 (18:20 -0700)] 
Merge pull request #72 from Memphiz/fixosxcompile

[osx] - fix compile

10 years ago[osx] - fix compile
Memphiz [Thu, 10 Apr 2014 18:31:25 +0000 (20:31 +0200)] 
[osx] - fix compile

10 years ago[socket] - disable linger by setting SO_LINGER to 0 seconds
Memphiz [Thu, 10 Apr 2014 18:30:30 +0000 (20:30 +0200)] 
[socket] - disable linger by setting SO_LINGER to 0 seconds

10 years agoFix the file position handling of the read and write calls
Arne Redlich [Mon, 31 Mar 2014 21:40:26 +0000 (23:40 +0200)] 
Fix the file position handling of the read and write calls

Since the interface is modelled after the libc calls we should try to match
their behaviour to avoid unpleasant surprises:
* read / write (sync and async flavours) update the file position
* pread / pwrite (sync and async flavours) do not update the file position
.

Signed-off-by: Arne Redlich <arne.redlich@googlemail.com>
10 years agolibnfs-sync: nfs_{read,write}: use their _async counterparts internally
Arne Redlich [Mon, 31 Mar 2014 21:35:38 +0000 (23:35 +0200)] 
libnfs-sync: nfs_{read,write}: use their _async counterparts internally

Previously nfs_read and nfs_write used to use nfs_pread and nfs_pwrite respectively.
In preparation of getting the file position handling right this has to be detangled.

Signed-off-by: Arne Redlich <arne.redlich@googlemail.com>
10 years agonfs_lseek{,_async}: allow negative offsets and guard against file positions < 0
Arne Redlich [Mon, 31 Mar 2014 19:23:48 +0000 (21:23 +0200)] 
nfs_lseek{,_async}: allow negative offsets and guard against file positions < 0

Signed-off-by: Arne Redlich <arne.redlich@googlemail.com>
10 years agoTrack waiting requests in a hash table, by xid
Mark Hills [Thu, 20 Feb 2014 14:02:08 +0000 (14:02 +0000)] 
Track waiting requests in a hash table, by xid

NFS servers can respond to requests in any order, and they do. In our
tests there is also some clustering to the responses; it could be
because eg. requests are served synchronously if the data is in the cache.

Introduce a hash table so that we are able to find the pdu quickly in
all cases, assuming random distribution of the responses.

10 years agoEnsure the next pointer is correct
Mark Hills [Thu, 27 Feb 2014 12:52:54 +0000 (12:52 +0000)] 
Ensure the next pointer is correct

Fixes a bug where the next pointer was not being explicitly set. We
were ok much of the time due to zero-filled memory, and also we need
this if the same pdu is re-queued.

10 years agoOptimisations to the pdu queues
Mark Hills [Tue, 7 Jan 2014 10:23:46 +0000 (10:23 +0000)] 
Optimisations to the pdu queues

When making many concurrent requests (as is likely in any performance
criticial application), the use of SLIST_REMOVE and SLIST_ADD_END are
a severe bottleneck because of their linear search.

I considered using a double-linked list but it was unnecessary to
allocate the additional memory for each list entry.

Instead, continue to use a single-linked list but retain:

* a pointer to the end of the list; and
* a pointer to the previous entry during a linear search.

The former would makes append operations O(1) time, and the latter
does the same for removal. We can do this because removal only happens
within the linear search, and there is no random access to the queue.

10 years agoRPM: Fix the specfile
Ronnie Sahlberg [Sun, 23 Mar 2014 16:54:21 +0000 (09:54 -0700)] 
RPM: Fix the specfile

10 years agoINCLUDES: Don't install libnfs-provate.h or slist.h
Ronnie Sahlberg [Sun, 23 Mar 2014 16:54:05 +0000 (09:54 -0700)] 
INCLUDES: Don't install libnfs-provate.h or slist.h

10 years agoAUTOTOOLS: Add Makefile.am to utils
Ronnie Sahlberg [Sun, 23 Mar 2014 16:18:31 +0000 (09:18 -0700)] 
AUTOTOOLS: Add Makefile.am to utils

10 years agoSPECFILE: Fix syntax error in the spec file
Ronnie Sahlberg [Sun, 23 Mar 2014 16:18:13 +0000 (09:18 -0700)] 
SPECFILE: Fix syntax error in the spec file

10 years agoNFS-LS: Build nfs-ls as utils and make it install under bin
Ronnie Sahlberg [Sat, 22 Mar 2014 01:31:05 +0000 (18:31 -0700)] 
NFS-LS: Build nfs-ls as utils and make it install under bin

10 years agoDOC: Add manpage for nfs-ls
Ronnie Sahlberg [Sat, 22 Mar 2014 01:15:40 +0000 (18:15 -0700)] 
DOC: Add manpage for nfs-ls

10 years agoexamples/Makefile.am Remove stuff we do not need
Ronnie Sahlberg [Sat, 22 Mar 2014 00:33:14 +0000 (17:33 -0700)] 
examples/Makefile.am Remove stuff we do not need

10 years agoPORTMAP: Add some comments about the origin of definitions
Ronnie Sahlberg [Fri, 21 Mar 2014 00:32:19 +0000 (17:32 -0700)] 
PORTMAP: Add some comments about the origin of definitions

10 years agonfs_normalize_path: don't strip trailing slash from "/"
Arne Redlich [Sun, 9 Mar 2014 20:55:42 +0000 (21:55 +0100)] 
nfs_normalize_path: don't strip trailing slash from "/"

Otherwise end up with a null string which is not permitted (RFC 1813, 3.2;
the code checks for it right after the now fixed nullification of "/").

Signed-off-by: Arne Redlich <arne.redlich@googlemail.com>
10 years agonfs_opendir2_cb: plug potential memory leak
Arne Redlich [Tue, 18 Feb 2014 20:07:46 +0000 (21:07 +0100)] 
nfs_opendir2_cb: plug potential memory leak

Spotted by clang analyzer.

Signed-off-by: Arne Redlich <arne.redlich@googlemail.com>
10 years agoPORTMAP client: Pass length as sockaddr_storage, not sockaddr_in6
Ronnie Sahlberg [Wed, 19 Mar 2014 03:31:17 +0000 (20:31 -0700)] 
PORTMAP client: Pass length as sockaddr_storage, not sockaddr_in6

10 years agoPORTMAP client: Parse and print the actual sockaddr that UADDR2TADDR returned
Ronnie Sahlberg [Wed, 19 Mar 2014 03:27:14 +0000 (20:27 -0700)] 
PORTMAP client: Parse and print the actual sockaddr that UADDR2TADDR returned

10 years agoIPV6: Update the README and specify ipv6 is supported
Ronnie Sahlberg [Wed, 19 Mar 2014 01:59:48 +0000 (18:59 -0700)] 
IPV6: Update the README and specify ipv6 is supported

10 years agoPORTMAP client: Add commands to send v3 SET/UNSET
Ronnie Sahlberg [Tue, 18 Mar 2014 13:56:12 +0000 (06:56 -0700)] 
PORTMAP client: Add commands to send v3 SET/UNSET

10 years agoPORTMAP: Rename pmap3_getaddr_result to pmap3_string_result
Ronnie Sahlberg [Tue, 18 Mar 2014 04:29:32 +0000 (21:29 -0700)] 
PORTMAP: Rename pmap3_getaddr_result to pmap3_string_result

10 years agoPORTMAP: Add support for v3 TADDR2UADDR
Ronnie Sahlberg [Tue, 18 Mar 2014 04:20:12 +0000 (21:20 -0700)] 
PORTMAP: Add support for v3 TADDR2UADDR

10 years agoPORTMAP: Add PMAP v3 UADDR2TADDR support
Ronnie Sahlberg [Tue, 18 Mar 2014 04:05:18 +0000 (21:05 -0700)] 
PORTMAP: Add PMAP v3 UADDR2TADDR support

10 years agoPORTMAP: Add support for PORTMAP v3 CALLIT
Ronnie Sahlberg [Tue, 18 Mar 2014 03:19:03 +0000 (20:19 -0700)] 
PORTMAP: Add support for PORTMAP v3 CALLIT

10 years agoPORTMAP: Add v3 GETTIME support
Ronnie Sahlberg [Tue, 18 Mar 2014 02:58:48 +0000 (19:58 -0700)] 
PORTMAP: Add v3 GETTIME support

10 years agoIPv6: If we use IPv6 then we need to use PMAP v3 GETADDR
Ronnie Sahlberg [Mon, 17 Mar 2014 00:48:35 +0000 (17:48 -0700)] 
IPv6: If we use IPv6 then we need to use PMAP v3 GETADDR

10 years agoPORTMAP: Add support for SET UNSET procedures
Ronnie Sahlberg [Sun, 16 Mar 2014 23:37:33 +0000 (16:37 -0700)] 
PORTMAP: Add support for SET UNSET procedures

10 years agoPORTMAP: Add support for PORTMAP v3 GETADDR
Ronnie Sahlberg [Sun, 16 Mar 2014 23:28:08 +0000 (16:28 -0700)] 
PORTMAP: Add support for PORTMAP v3 GETADDR

10 years agoPORTMAPv3: Add NULL and DUMP commands. Also add portmap example client.
Ronnie Sahlberg [Sun, 16 Mar 2014 23:03:19 +0000 (16:03 -0700)] 
PORTMAPv3: Add NULL and DUMP commands. Also add portmap example client.

10 years agoGETEXPORT: Use rpc_connect_program_async() flow during list exports
Ronnie Sahlberg [Sun, 16 Mar 2014 22:06:56 +0000 (15:06 -0700)] 
GETEXPORT: Use rpc_connect_program_async() flow during list exports

and get rid of several now redundant callbacks.

10 years agoRPC_CONNECT: Use the rpc_connect_program_async() flow during nfs_mount()
Ronnie Sahlberg [Sun, 16 Mar 2014 22:00:19 +0000 (15:00 -0700)] 
RPC_CONNECT:  Use the rpc_connect_program_async() flow during nfs_mount()

10 years agoPORTMAP: Rename the functions in PMAP to PMAP2 to desribe the version of PMAP we...
Ronnie Sahlberg [Sun, 16 Mar 2014 21:34:32 +0000 (14:34 -0700)] 
PORTMAP: Rename the functions in PMAP to PMAP2 to desribe the version of PMAP we use.

Future patches will add PMAP3 which we will need for IPv6 support.

10 years agoIPV6: Add basic IPv6 support
Ronnie Sahlberg [Sun, 16 Mar 2014 16:12:49 +0000 (09:12 -0700)] 
IPV6: Add basic IPv6 support

This adds basic IPv6 support to libnfs.
Since libnfs currently only support PORTMAPPER protocol up to version 2
the IPv6 support only works if the server runs Both MOUNT and NFS protocols
on the same ports for IPv6 as for IPv4.

To get full IPv6 support we need to add support for PORTMAPPER version 3
and use it for discovery when using IPv6

10 years agoNew version: 1.9.3
Ronnie Sahlberg [Thu, 20 Mar 2014 01:12:45 +0000 (18:12 -0700)] 
New version:  1.9.3

 Wed Mar 19 2014: Version 1.9.3
 - Add O_TRUNC support to nfs_open()
 - Add a simple but incomplete LD_PRELOAD tool
 - Fixes for some memory leaks and C++ compile support
 - Make ANDROID default uid/gid to 65534
 - Allow the READDIRPLUS emulation to still work if some objects
   in the direcotry can not be lookedup (NFSv4 ACL denying READ-ATTRIBUTES)
 - Have libnfs retry any read/write operations where the server responds
   with a short read/write. Some servers do this when they are overloaded?