diff options
author | phk <phk@FreeBSD.org> | 2003-02-06 21:50:39 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-02-06 21:50:39 +0000 |
commit | 84f57209a42180d31e388c0350d191e24f7fe34e (patch) | |
tree | 298460a7e8269eea0b89fd9a6c5b08afae59b198 /sys/geom/geom_disk.c | |
parent | fc6ee6491112206cafef5f50351894a6b3ca8d51 (diff) | |
download | FreeBSD-src-84f57209a42180d31e388c0350d191e24f7fe34e.zip FreeBSD-src-84f57209a42180d31e388c0350d191e24f7fe34e.tar.gz |
Experimentally don't let go of Giant in geom_disk's done.
We may actually be increasing Giant contention doing so because the
actual stuff we do is very cheap.
Also I am not convinced there is not a tiny window for a race here.
Diffstat (limited to 'sys/geom/geom_disk.c')
-rw-r--r-- | sys/geom/geom_disk.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c index c890836..b55ea60 100644 --- a/sys/geom/geom_disk.c +++ b/sys/geom/geom_disk.c @@ -154,6 +154,7 @@ g_disk_kerneldump(struct bio *bp, struct disk *dp) static void g_disk_done(struct bio *bp) { +#ifdef maybe_not struct disk *dp; dp = bp->bio_disk; @@ -165,6 +166,10 @@ g_disk_done(struct bio *bp) } else { g_std_done(bp); } +#else + bp->bio_completed = bp->bio_length - bp->bio_resid; + g_std_done(bp); +#endif } static void |