summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2008-06-07 17:50:34 +0000
committeroster <oster@NetBSD.org>2008-06-07 17:50:34 +0000
commitea16b13f64ae455bf32b15cecffc784d34f2b592 (patch)
tree797e9aec25823e803ff1a56e5194e1a38aedad93 /sys/dev
parent564b3de4f43870b3986a45e67ef1d421e804eb9e (diff)
- Use bdev_strategy() instead of VOP_STRATEGY().
- Don't bother taking the v_interlock or bumping b_vp->v_numoutput -- there won't be any other writers for this bp, and so there's no point doing this locking song'n'dance. Patch from Juergen Hannken-Illjes. Thanks!!! Addresses PR#38856. With this change I've been unable to replicate the hard hangs.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/raidframe/rf_netbsdkintf.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/sys/dev/raidframe/rf_netbsdkintf.c b/sys/dev/raidframe/rf_netbsdkintf.c
index b21f041c257..313a491a213 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.246 2008/04/28 20:23:56 martin Exp $ */
+/* $NetBSD: rf_netbsdkintf.c,v 1.247 2008/06/07 17:50:34 oster Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998, 2008 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -139,7 +139,7 @@
***********************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.246 2008/04/28 20:23:56 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.247 2008/06/07 17:50:34 oster Exp $");
#include <sys/param.h>
#include <sys/errno.h>
@@ -2104,7 +2104,7 @@ rf_DispatchKernelIO(RF_DiskQueue_t *queue, RF_DiskQueueData_t *req)
(int) (req->numSector <<
queue->raidPtr->logBytesPerSector),
(int) queue->raidPtr->logBytesPerSector));
- VOP_STRATEGY(bp->b_vp, bp);
+ bdev_strategy(bp);
break;
@@ -2216,14 +2216,6 @@ InitBP(struct buf *bp, struct vnode *b_vp, unsigned rw_flag, dev_t dev,
bp->b_proc = b_proc;
bp->b_iodone = cbFunc;
bp->b_private = cbArg;
- bp->b_vp = b_vp;
- bp->b_objlock = &b_vp->v_interlock;
- if ((bp->b_flags & B_READ) == 0) {
- mutex_enter(&b_vp->v_interlock);
- b_vp->v_numoutput++;
- mutex_exit(&b_vp->v_interlock);
- }
-
}
static void