svn commit: r333656 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver
Rick Macklem
rmacklem at FreeBSD.org
Wed May 16 00:57:44 UTC 2018
Author: rmacklem
Date: Wed May 16 00:57:42 2018
New Revision: 333656
URL: https://svnweb.freebsd.org/changeset/base/333656
Log:
Fix two cases where the test for "no mirrors" didn't traverse the list
checking for a valid mirror.
Modified:
projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c
projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c
Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c
==============================================================================
--- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Tue May 15 23:55:38 2018 (r333655)
+++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Wed May 16 00:57:42 2018 (r333656)
@@ -4331,8 +4331,12 @@ nfsv4_findmirror(struct nfsmount *nmp, struct nfsdevic
if (fndds != NULL)
break;
if (ds->nfsdev_nmp == nmp) {
- /* If there are no mirrors, return error. */
- if (TAILQ_EMPTY(&ds->nfsdev_mirrors)) {
+ /* If there are no mirrors, return NULL. */
+ TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) {
+ if (mds->nfsdev_nmp != NULL)
+ break;
+ }
+ if (mds == NULL) {
NFSCL_DEBUG(4, "no mirror for DS\n");
return (NULL);
}
Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c
==============================================================================
--- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Tue May 15 23:55:38 2018 (r333655)
+++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 16 00:57:42 2018 (r333656)
@@ -7220,7 +7220,11 @@ nfsrv_delds(char *devid, NFSPROC_T *p)
if (NFSBCMP(ds->nfsdev_deviceid, devid, NFSX_V4DEVICEID) == 0 &&
ds->nfsdev_nmp != NULL) {
/* If there are no mirrors, return error. */
- if (TAILQ_EMPTY(&ds->nfsdev_mirrors)) {
+ TAILQ_FOREACH(mds, &ds->nfsdev_mirrors, nfsdev_list) {
+ if (mds->nfsdev_nmp != NULL)
+ break;
+ }
+ if (mds == NULL) {
NFSDDSUNLOCK();
NFSD_DEBUG(4, "no mirror for DS\n");
return (ENXIO);
More information about the svn-src-projects
mailing list