From 83cae1af10dbd0a4b0bbee7988ff841948656c91 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 28 Jan 2005 16:04:44 +0000 Subject: - If mpsafevfs is off, acquire giant around all calls to bufdone(). Sponsored by: Isilon Systems, Inc. --- sys/geom/geom_vfs.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/geom/geom_vfs.c b/sys/geom/geom_vfs.c index 2e8ae34..405521b 100644 --- a/sys/geom/geom_vfs.c +++ b/sys/geom/geom_vfs.c @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /* XXX Temporary for VFS_LOCK_GIANT */ #include #include @@ -65,6 +66,7 @@ static void g_vfs_done(struct bio *bip) { struct buf *bp; + int vfslocked; if (bip->bio_error) { printf("g_vfs_done():"); @@ -78,7 +80,9 @@ g_vfs_done(struct bio *bip) bp->b_ioflags |= BIO_ERROR; bp->b_resid = bp->b_bcount - bip->bio_completed; g_destroy_bio(bip); + vfslocked = VFS_LOCK_GIANT(((struct mount *)NULL)); bufdone(bp); + VFS_UNLOCK_GIANT(vfslocked); } void -- cgit v1.1