svn commit: r334938 - projects/pnfs-planb-server/sys/fs/nfsserver
Rick Macklem
rmacklem at FreeBSD.org
Mon Jun 11 01:22:02 UTC 2018
Author: rmacklem
Date: Mon Jun 11 01:22:01 2018
New Revision: 334938
URL: https://svnweb.freebsd.org/changeset/base/334938
Log:
Use the macro that checks if an error should disable a DS in the pNFS server
code.
Modified:
projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c
Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c
==============================================================================
--- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Mon Jun 11 01:13:12 2018 (r334937)
+++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdport.c Mon Jun 11 01:22:01 2018 (r334938)
@@ -3930,7 +3930,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap,
if (ret != 0) {
KASSERT(error == 0, ("nfsrv_dscreate err=%d",
error));
- if (failpos == -1 && ret == ENXIO)
+ if (failpos == -1 && nfsds_failerr(ret))
failpos = i;
else
error = ret;
@@ -3941,7 +3941,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap,
tpf->dsf_dir = dsdir[mirrorcnt - 1];
error = nfsrv_dscreate(dvp[mirrorcnt - 1], vap, &va, &fh, tpf,
&dsattr, NULL, tcred, p, NULL);
- if (failpos == -1 && mirrorcnt > 1 && error == ENXIO) {
+ if (failpos == -1 && mirrorcnt > 1 && nfsds_failerr(error)) {
failpos = mirrorcnt - 1;
error = 0;
}
@@ -3954,7 +3954,7 @@ nfsrv_pnfscreate(struct vnode *vp, struct vattr *vap,
while (tdsc->inprog != 0 && tdsc->done == 0)
tsleep(&tdsc->tsk, PVFS, "srvdcr", timo);
if (tdsc->err != 0) {
- if (failpos == -1 && tdsc->err == ENXIO)
+ if (failpos == -1 && nfsds_failerr(tdsc->err))
failpos = i;
else if (error == 0)
error = tdsc->err;
@@ -4161,12 +4161,12 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch
}
if (ret != 0) {
ret = nfsrv_dsremove(dvp[i], fname, tcred, p);
- if (failpos == -1 && ret == ENXIO)
+ if (failpos == -1 && nfsds_failerr(ret))
failpos = i;
}
}
ret = nfsrv_dsremove(dvp[mirrorcnt - 1], fname, tcred, p);
- if (failpos == -1 && mirrorcnt > 1 && ret == ENXIO)
+ if (failpos == -1 && mirrorcnt > 1 && nfsds_failerr(ret))
failpos = mirrorcnt - 1;
timo = hz / 50; /* Wait for 20msec. */
if (timo < 1)
@@ -4175,7 +4175,7 @@ nfsrv_pnfsremove(struct vnode **dvp, int mirrorcnt, ch
for (tdsrm = dsrm, i = 0; i < mirrorcnt - 1; i++, tdsrm++) {
while (tdsrm->inprog != 0 && tdsrm->done == 0)
tsleep(&tdsrm->tsk, PVFS, "srvdsrm", timo);
- if (failpos == -1 && tdsrm->err == ENXIO)
+ if (failpos == -1 && nfsds_failerr(tdsrm->err))
failpos = i;
}
@@ -4364,9 +4364,8 @@ tryagain:
if (ioproc == NFSPROC_READDS) {
error = nfsrv_readdsrpc(fh, off, cnt, cred, p, nmp[0],
mpp, mpp2);
- if (error == ENXIO && mirrorcnt > 1) {
+ if (nfsds_failerr(error) && mirrorcnt > 1) {
/*
- * ENXIO indicates a problem with the mirror.
* Setting failpos will cause the mirror
* to be disabled and then a retry of this
* read is required.
@@ -4387,9 +4386,8 @@ tryagain:
else {
error = nfsrv_getattrdsrpc(&fh[mirrorcnt - 1], cred, p,
vp, nmp[mirrorcnt - 1], nap);
- if (error == ENXIO && mirrorcnt > 1) {
+ if (nfsds_failerr(error) && mirrorcnt > 1) {
/*
- * ENXIO indicates a problem with the mirror.
* Setting failpos will cause the mirror
* to be disabled and then a retry of this
* getattr is required.
@@ -4951,7 +4949,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s
if (ret != 0) {
ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, NULL,
tdrpc->m, cred, p);
- if (ret == ENXIO && *failposp == -1)
+ if (nfsds_failerr(ret) && *failposp == -1)
*failposp = i;
else if (error == 0 && ret != 0)
error = ret;
@@ -4961,7 +4959,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s
}
m = m_copym(*mpp, offs, NFSM_RNDUP(len), M_WAITOK);
ret = nfsrv_writedsdorpc(*nmpp, fhp, off, len, &na, m, cred, p);
- if (ret == ENXIO && *failposp == -1 && mirrorcnt > 1)
+ if (nfsds_failerr(ret) && *failposp == -1 && mirrorcnt > 1)
*failposp = mirrorcnt - 1;
else if (error == 0 && ret != 0)
error = ret;
@@ -4976,7 +4974,7 @@ nfsrv_writedsrpc(fhandle_t *fhp, off_t off, int len, s
/* Wait for RPCs on separate threads to complete. */
while (tdrpc->inprog != 0 && tdrpc->done == 0)
tsleep(&tdrpc->tsk, PVFS, "srvwrds", timo);
- if (tdrpc->err == ENXIO && *failposp == -1)
+ if (nfsds_failerr(tdrpc->err) && *failposp == -1)
*failposp = i;
else if (error == 0 && tdrpc->err != 0)
error = tdrpc->err;
@@ -5135,7 +5133,7 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred,
if (ret != 0) {
ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap,
&na);
- if (ret == ENXIO && *failposp == -1)
+ if (nfsds_failerr(ret) && *failposp == -1)
*failposp = i;
else if (error == 0 && ret != 0)
error = ret;
@@ -5144,7 +5142,7 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred,
fhp++;
}
ret = nfsrv_setattrdsdorpc(fhp, cred, p, vp, *nmpp, nap, &na);
- if (ret == ENXIO && *failposp == -1 && mirrorcnt > 1)
+ if (nfsds_failerr(ret) && *failposp == -1 && mirrorcnt > 1)
*failposp = mirrorcnt - 1;
else if (error == 0 && ret != 0)
error = ret;
@@ -5159,7 +5157,7 @@ nfsrv_setattrdsrpc(fhandle_t *fhp, struct ucred *cred,
/* Wait for RPCs on separate threads to complete. */
while (tdrpc->inprog != 0 && tdrpc->done == 0)
tsleep(&tdrpc->tsk, PVFS, "srvsads", timo);
- if (tdrpc->err == ENXIO && *failposp == -1)
+ if (nfsds_failerr(tdrpc->err) && *failposp == -1)
*failposp = i;
else if (error == 0 && tdrpc->err != 0)
error = tdrpc->err;
@@ -5283,7 +5281,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred,
if (ret != 0) {
ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp,
aclp);
- if (ret == ENXIO && *failposp == -1)
+ if (nfsds_failerr(ret) && *failposp == -1)
*failposp = i;
else if (error == 0 && ret != 0)
error = ret;
@@ -5292,7 +5290,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred,
fhp++;
}
ret = nfsrv_setacldsdorpc(fhp, cred, p, vp, *nmpp, aclp);
- if (ret == ENXIO && *failposp == -1 && mirrorcnt > 1)
+ if (nfsds_failerr(ret) && *failposp == -1 && mirrorcnt > 1)
*failposp = mirrorcnt - 1;
else if (error == 0 && ret != 0)
error = ret;
@@ -5305,7 +5303,7 @@ nfsrv_setacldsrpc(fhandle_t *fhp, struct ucred *cred,
/* Wait for RPCs on separate threads to complete. */
while (tdrpc->inprog != 0 && tdrpc->done == 0)
tsleep(&tdrpc->tsk, PVFS, "srvacds", timo);
- if (tdrpc->err == ENXIO && *failposp == -1)
+ if (nfsds_failerr(tdrpc->err) && *failposp == -1)
*failposp = i;
else if (error == 0 && tdrpc->err != 0)
error = tdrpc->err;
More information about the svn-src-projects
mailing list