diff --git a/sys/geom/geom_vfs.c b/sys/geom/geom_vfs.c index b6f5916c386a..04d5fe883a8f 100644 --- a/sys/geom/geom_vfs.c +++ b/sys/geom/geom_vfs.c @@ -57,6 +57,7 @@ struct g_vfs_softc { int sc_active; bool sc_orphaned; int sc_enxio_active; + int sc_enxio_reported; }; static struct buf_ops __g_vfs_bufops = { @@ -150,8 +151,13 @@ g_vfs_done(struct bio *bip) } if (sc->sc_enxio_active) bip->bio_error = ENXIO; - g_print_bio("g_vfs_done():", bip, "error = %d", - bip->bio_error); + if (bip->bio_error != ENXIO || + atomic_cmpset_int(&sc->sc_enxio_reported, 0, 1)) { + g_print_bio("g_vfs_done():", bip, "error = %d%s", + bip->bio_error, + bip->bio_error != ENXIO ? "" : + " supressing further ENXIO"); + } } bp->b_error = bip->bio_error; bp->b_ioflags = bip->bio_flags;