diff options
Diffstat (limited to 'usr/src/uts/common/fs/dev/sdev_vfsops.c')
-rw-r--r-- | usr/src/uts/common/fs/dev/sdev_vfsops.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/dev/sdev_vfsops.c b/usr/src/uts/common/fs/dev/sdev_vfsops.c index 00e981ce9c..82f127fe74 100644 --- a/usr/src/uts/common/fs/dev/sdev_vfsops.c +++ b/usr/src/uts/common/fs/dev/sdev_vfsops.c @@ -22,6 +22,7 @@ * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * Copyright 2015 Joyent, Inc. All rights reserved. + * Copyright (c) 2017 by Delphix. All rights reserved. */ /* @@ -505,7 +506,7 @@ sdev_find_mntinfo(char *mntpt) mntinfo = sdev_mntinfo; while (mntinfo) { if (strcmp(mntpt, mntinfo->sdev_root->sdev_name) == 0) { - SDEVTOV(mntinfo->sdev_root)->v_count++; + VN_HOLD(SDEVTOV(mntinfo->sdev_root)); break; } mntinfo = mntinfo->sdev_next; @@ -517,7 +518,11 @@ sdev_find_mntinfo(char *mntpt) void sdev_mntinfo_rele(struct sdev_data *mntinfo) { + vnode_t *vp = SDEVTOV(mntinfo->sdev_root); + mutex_enter(&sdev_lock); - SDEVTOV(mntinfo->sdev_root)->v_count--; + mutex_enter(&vp->v_lock); + VN_RELE_LOCKED(vp); + mutex_exit(&vp->v_lock); mutex_exit(&sdev_lock); } |