summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_bsd.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-04-02 21:10:04 +0000
committerphk <phk@FreeBSD.org>2003-04-02 21:10:04 +0000
commit39cbb43bab476ff3c79356e36f26e51a6b90a692 (patch)
tree629b1f684f16eeb00568b7d1a2df6af64778ddf7 /sys/geom/geom_bsd.c
parentcedf04c4758318e15e1a5924e4226bb5a9699107 (diff)
downloadFreeBSD-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.c12
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;
OpenPOWER on IntegriCloud