From 26facaeb4d00dc7c830f76ae7dfeda15ead2bd3c Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Tue, 5 Mar 2002 13:25:57 +0000 Subject: [PATCH] If in strategy we find that we have no devsw on the device anymore we are probably talking about some disk-device which wente away, so return ENXIO instead of panicing. --- sys/fs/specfs/spec_vnops.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c index 6c4fcd98776..ba0e47b6c58 100644 --- a/sys/fs/specfs/spec_vnops.c +++ b/sys/fs/specfs/spec_vnops.c @@ -485,9 +485,12 @@ spec_strategy(ap) mp->mnt_stat.f_syncreads++; } } - KASSERT(devsw(bp->b_dev) != NULL, - ("No devsw on dev %s responsible for buffer %p\n", - devtoname(bp->b_dev), bp)); + if (devsw(bp->b_dev) == NULL) { + bp->b_io.bio_error = ENXIO; + bp->b_io.bio_flags |= BIO_ERROR; + biodone(&bp->b_io); + return (0); + } KASSERT(devsw(bp->b_dev)->d_strategy != NULL, ("No strategy on dev %s responsible for buffer %p\n", devtoname(bp->b_dev), bp));