diff options
author | phk <phk@FreeBSD.org> | 2003-08-05 06:43:56 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-08-05 06:43:56 +0000 |
commit | aa4433feb65c74a058d18aa27115fbfde6847fa0 (patch) | |
tree | 5e232694adb1b1439946bc05d1fa35a16d0b0cbf /sys/fs/specfs | |
parent | bf614e120898c4a3cdc8973322f8d49059428dbf (diff) | |
download | FreeBSD-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.c | 2 |
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(); |