summaryrefslogtreecommitdiffstats
path: root/sys/fs/specfs
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-08-05 06:43:56 +0000
committerphk <phk@FreeBSD.org>2003-08-05 06:43:56 +0000
commitaa4433feb65c74a058d18aa27115fbfde6847fa0 (patch)
tree5e232694adb1b1439946bc05d1fa35a16d0b0cbf /sys/fs/specfs
parentbf614e120898c4a3cdc8973322f8d49059428dbf (diff)
downloadFreeBSD-src-aa4433feb65c74a058d18aa27115fbfde6847fa0.zip
FreeBSD-src-aa4433feb65c74a058d18aa27115fbfde6847fa0.tar.gz
Only drop Giant around the drivers ->d_strategy() if the buffer is not
marked to prevent this.
Diffstat (limited to 'sys/fs/specfs')
-rw-r--r--sys/fs/specfs/spec_vnops.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c
index 9594756..1f5ebba 100644
--- a/sys/fs/specfs/spec_vnops.c
+++ b/sys/fs/specfs/spec_vnops.c
@@ -504,7 +504,7 @@ spec_xstrategy(struct vnode *vp, struct buf *bp)
("No strategy on dev %s responsible for buffer %p\n",
devtoname(bp->b_dev), bp));
- if (dsw->d_flags & D_NOGIANT) {
+ if ((dsw->d_flags & D_NOGIANT) && !(bp->b_flags & B_KEEPGIANT)) {
DROP_GIANT();
DEV_STRATEGY(bp);
PICKUP_GIANT();
OpenPOWER on IntegriCloud