summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2000-09-08 01:36:35 +0000
committeroster <oster@NetBSD.org>2000-09-08 01:36:35 +0000
commit3fa62c46421d4e74ce992deb39390a652483aaed (patch)
treed57dd3f58e4b020f41e828e3f2b1d4947310954b /sys/dev/raidframe
parent19f36696bc1e066424cb89dcc83a0960e90c75fa (diff)
Make sure we are passing a locked vp to VOP_CLOSE.
Diffstat (limited to 'sys/dev/raidframe')
-rw-r--r--sys/dev/raidframe/rf_disks.c3
-rw-r--r--sys/dev/raidframe/rf_netbsdkintf.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/sys/dev/raidframe/rf_disks.c b/sys/dev/raidframe/rf_disks.c
index 328fe2613e6..4308602f2ff 100644
--- a/sys/dev/raidframe/rf_disks.c
+++ b/sys/dev/raidframe/rf_disks.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_disks.c,v 1.31 2000/06/02 01:17:14 oster Exp $ */
+/* $NetBSD: rf_disks.c,v 1.32 2000/09/08 01:36:35 oster Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -568,6 +568,7 @@ rf_AutoConfigureDisks(raidPtr, cfgPtr, auto_config)
ac = auto_config;
while(ac!=NULL) {
if (ac->flag == 0) {
+ vn_lock(ac->vp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(ac->vp, FREAD, NOCRED, 0);
vput(ac->vp);
ac->vp = NULL;
diff --git a/sys/dev/raidframe/rf_netbsdkintf.c b/sys/dev/raidframe/rf_netbsdkintf.c
index 8a5aa5c4ac2..850e9f97529 100644
--- a/sys/dev/raidframe/rf_netbsdkintf.c
+++ b/sys/dev/raidframe/rf_netbsdkintf.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_netbsdkintf.c,v 1.95 2000/08/19 18:20:07 oster Exp $ */
+/* $NetBSD: rf_netbsdkintf.c,v 1.96 2000/09/08 01:36:36 oster Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -2445,6 +2445,7 @@ rf_close_component(raidPtr, vp, auto_configured)
if (vp != NULL) {
if (auto_configured == 1) {
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(vp, FREAD, NOCRED, 0);
vput(vp);
@@ -2664,6 +2665,7 @@ if (raidautoconfig) {
/* don't need this any more. We'll allocate it again
a little later if we really do... */
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(vp, FREAD, NOCRED, 0);
vput(vp);
@@ -2729,6 +2731,7 @@ if (raidautoconfig) {
if (!good_one) {
/* cleanup */
free(clabel, M_RAIDFRAME);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(vp, FREAD, NOCRED, 0);
vput(vp);
}
@@ -3122,6 +3125,7 @@ rf_release_all_vps(cset)
while(ac!=NULL) {
/* Close the vp, and give it back */
if (ac->vp) {
+ vn_lock(ac->vp, LK_EXCLUSIVE | LK_RETRY);
VOP_CLOSE(ac->vp, FREAD, NOCRED, 0);
vput(ac->vp);
ac->vp = NULL;