diff options
author | grog <grog@FreeBSD.org> | 1998-11-03 06:37:57 +0000 |
---|---|---|
committer | grog <grog@FreeBSD.org> | 1998-11-03 06:37:57 +0000 |
commit | 14ab1cb81ac331bcf1db66c602e6e02bef1725eb (patch) | |
tree | 229477ed45f4d89b98ddd491373dd0e71cda91a3 /lkm | |
parent | 194b462c0ccb16d6302f0a0fb1f5654df3fb3c5d (diff) | |
download | FreeBSD-src-14ab1cb81ac331bcf1db66c602e6e02bef1725eb.zip FreeBSD-src-14ab1cb81ac331bcf1db66c602e6e02bef1725eb.tar.gz |
Take drive down if the disk driver tells us it's not there
Diffstat (limited to 'lkm')
-rw-r--r-- | lkm/vinum/interrupt.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lkm/vinum/interrupt.c b/lkm/vinum/interrupt.c index 1557cfe..086d6d1 100644 --- a/lkm/vinum/interrupt.c +++ b/lkm/vinum/interrupt.c @@ -35,7 +35,7 @@ * otherwise) arising in any way out of the use of this software, even if * advised of the possibility of such damage. * - * $Id: interrupt.c,v 1.1 1998/08/13 06:12:27 grog Exp grog $ + * $Id: interrupt.c,v 1.2 1998/10/30 06:39:36 grog Exp grog $ */ #define REALLYKERNEL @@ -82,6 +82,10 @@ complete_rqe(struct buf *bp) rq->error = EIO; /* no: catchall "I/O error" */ if (rq->error == EIO) /* I/O error, */ set_sd_state(rqe->sdno, sd_crashed, setstate_force | setstate_noupdate); /* take the subdisk down */ + else if (rq->error = ENXIO) /* or "not configured" (drive down) */ + set_drive_state(rqe->driveno, /* take the drive down */ + drive_down, + setstate_force | setstate_noupdate); } /* Now update the statistics */ if (bp->b_flags & B_READ) { /* read operation */ |