summaryrefslogtreecommitdiffstats
path: root/sys/fs/nfs
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2013-01-15 22:08:17 +0000
committerjhb <jhb@FreeBSD.org>2013-01-15 22:08:17 +0000
commite7637960ebaa5f862664584870da8796198fd65b (patch)
tree4d831e81e5c3477cff3a9fa2039edd2840ae8dd8 /sys/fs/nfs
parentd7bcd25c32898cffeb061057c553bf776a0004f6 (diff)
downloadFreeBSD-src-e7637960ebaa5f862664584870da8796198fd65b.zip
FreeBSD-src-e7637960ebaa5f862664584870da8796198fd65b.tar.gz
- More properly handle interrupted NFS requests on an interruptible mount
by returning an error of EINTR rather than EACCES. - While here, bring back some (but not all) of the NFS RPC statistics lost when krpc was committed. Reviewed by: rmacklem MFC after: 1 week
Diffstat (limited to 'sys/fs/nfs')
-rw-r--r--sys/fs/nfs/nfs_commonkrpc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/fs/nfs/nfs_commonkrpc.c b/sys/fs/nfs/nfs_commonkrpc.c
index 6640c1f..cce95b2 100644
--- a/sys/fs/nfs/nfs_commonkrpc.c
+++ b/sys/fs/nfs/nfs_commonkrpc.c
@@ -767,12 +767,18 @@ tryagain:
if (stat == RPC_SUCCESS) {
error = 0;
} else if (stat == RPC_TIMEDOUT) {
+ NFSINCRGLOBAL(newnfsstats.rpctimeouts);
error = ETIMEDOUT;
} else if (stat == RPC_VERSMISMATCH) {
+ NFSINCRGLOBAL(newnfsstats.rpcinvalid);
error = EOPNOTSUPP;
} else if (stat == RPC_PROGVERSMISMATCH) {
+ NFSINCRGLOBAL(newnfsstats.rpcinvalid);
error = EPROTONOSUPPORT;
+ } else if (stat == RPC_INTR) {
+ error = EINTR;
} else {
+ NFSINCRGLOBAL(newnfsstats.rpcinvalid);
error = EACCES;
}
if (error) {
OpenPOWER on IntegriCloud