diff options
author | phk <phk@FreeBSD.org> | 2003-04-02 21:10:04 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2003-04-02 21:10:04 +0000 |
commit | 39cbb43bab476ff3c79356e36f26e51a6b90a692 (patch) | |
tree | 629b1f684f16eeb00568b7d1a2df6af64778ddf7 /sys/geom/geom_bsd.c | |
parent | cedf04c4758318e15e1a5924e4226bb5a9699107 (diff) | |
download | FreeBSD-src-39cbb43bab476ff3c79356e36f26e51a6b90a692.zip FreeBSD-src-39cbb43bab476ff3c79356e36f26e51a6b90a692.tar.gz |
Add handling for cancelled events in the g_call_me() methods.
Diffstat (limited to 'sys/geom/geom_bsd.c')
-rw-r--r-- | sys/geom/geom_bsd.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/geom/geom_bsd.c b/sys/geom/geom_bsd.c index 39f4222..f9e7df8 100644 --- a/sys/geom/geom_bsd.c +++ b/sys/geom/geom_bsd.c @@ -479,7 +479,7 @@ g_bsd_try(struct g_geom *gp, struct g_slicer *gsp, struct g_consumer *cp, int se */ static void -g_bsd_ioctl(void *arg, int flag __unused) +g_bsd_ioctl(void *arg, int flag) { struct bio *bp; struct g_geom *gp; @@ -494,11 +494,14 @@ g_bsd_ioctl(void *arg, int flag __unused) int error, i; uint64_t sum; + bp = arg; + if (flag == EV_CANCEL) { + g_io_deliver(bp, ENXIO); + return; + } /* We don't need topology for now. */ g_topology_unlock(); - /* Get hold of the interesting bits from the bio. */ - bp = arg; gp = bp->bio_to->geom; gsp = gp->softc; ms = gsp->softc; @@ -608,7 +611,7 @@ g_bsd_diocbsdbb(dev_t dev, u_long cmd __unused, caddr_t data, int fflag __unused * footshooting as best we can. */ static void -g_bsd_hotwrite(void *arg, int flag __unused) +g_bsd_hotwrite(void *arg, int flag) { struct bio *bp; struct g_geom *gp; @@ -619,6 +622,7 @@ g_bsd_hotwrite(void *arg, int flag __unused) u_char *p; int error; + KASSERT(flag != EV_CANCEL, ("g_bsd_hotwrite cancelled")); bp = arg; gp = bp->bio_to->geom; gsp = gp->softc; |