freebsd-dev/sys/fs/nfsserver
Andriy Gapon ca8f3d1ca2 nfsrvd_readdirplus: for some errors, do not fail the entire request
Instead, a failing entry is skipped.
This change consist of two logical changes.

A failure to vget or lookup an entry is considered to be a result of a
concurrent removal, which is the only reasonable explanation given that
the filesystem is busied.  So, the entry would be silently skipped.

In the case of a failure to get attributes of an entry for an NFSv3
request, the entry would be silently skipped.  There can be legitimate
reasons for the failure, but NFSv3 does not provide any means to report
the error, so we have two options: either fail the whole request or
ignore the failed entry.  Traditionally, the old NFS server used the
latter option, so the code is reverted to it.  Making the whole
directory unreadable because of a single entry seems to be unpractical.

Additionally, some bits of code are slightly re-arranged to account for
the new control flow and to honor style(9).

Reviewed by:	rmacklem
Sponsored by:	Panzura
Differential Revision: https://reviews.freebsd.org/D15424
2018-10-22 15:33:05 +00:00
..
nfs_fha_new.c sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
nfs_fha_new.h sys/fs: further adoption of SPDX licensing ID tags. 2017-11-27 15:15:37 +00:00
nfs_nfsdcache.c style: Remove remaining deprecated MALLOC/FREE macros 2018-01-25 22:25:13 +00:00
nfs_nfsdkrpc.c Fix LORs between vn_start_write() and vn_lock() in the pNFS server. 2018-08-17 21:12:16 +00:00
nfs_nfsdport.c nfsrvd_readdirplus: for some errors, do not fail the entire request 2018-10-22 15:33:05 +00:00
nfs_nfsdserv.c Silence newer gcc warnings. 2018-07-29 21:51:17 +00:00
nfs_nfsdsocket.c Fix LORs between vn_start_write() and vn_lock() in the pNFS server. 2018-08-17 21:12:16 +00:00
nfs_nfsdstate.c Fix LORs between vn_start_write() and vn_lock() in nfsrv_copymr(). 2018-08-18 19:14:06 +00:00
nfs_nfsdsubs.c Merge the pNFS server code from projects/pnfs-planb-server into head. 2018-06-12 19:36:32 +00:00