- 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
This commit is contained in:
parent
d7bcd25c32
commit
e7637960eb
@ -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) {
|
||||
|
@ -549,14 +549,21 @@ tryagain:
|
||||
*/
|
||||
if (stat == RPC_SUCCESS)
|
||||
error = 0;
|
||||
else if (stat == RPC_TIMEDOUT)
|
||||
else if (stat == RPC_TIMEDOUT) {
|
||||
nfsstats.rpctimeouts++;
|
||||
error = ETIMEDOUT;
|
||||
else if (stat == RPC_VERSMISMATCH)
|
||||
} else if (stat == RPC_VERSMISMATCH) {
|
||||
nfsstats.rpcinvalid++;
|
||||
error = EOPNOTSUPP;
|
||||
else if (stat == RPC_PROGVERSMISMATCH)
|
||||
} else if (stat == RPC_PROGVERSMISMATCH) {
|
||||
nfsstats.rpcinvalid++;
|
||||
error = EPROTONOSUPPORT;
|
||||
else
|
||||
} else if (stat == RPC_INTR) {
|
||||
error = EINTR;
|
||||
} else {
|
||||
nfsstats.rpcinvalid++;
|
||||
error = EACCES;
|
||||
}
|
||||
if (error)
|
||||
goto nfsmout;
|
||||
|
||||
@ -572,6 +579,7 @@ tryagain:
|
||||
if (error == ENOMEM) {
|
||||
m_freem(mrep);
|
||||
AUTH_DESTROY(auth);
|
||||
nfsstats.rpcinvalid++;
|
||||
return (error);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user