HomeFreeBSD

MFC 259240

Description

MFC 259240

sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
    When a da or ada device dissappears, outstanding IOs fail with
    ENXIO, not EIO.  The check for EIO was probably copied from Illumos,
    where that is indeed the correct errno.

    Without this change, pulling a busy drive from a zpool would usually
    turn it into UNAVAIL, even though pulling an idle drive would turn
    it into REMOVED.  With this change, it is REMOVED every time.

    Also, vdev_geom_io_intr shouldn't do zfs_post_remove, because that
    results in devd getting two resource.fs.zfs.removed events.  The
    comment said that the event had to be sent directly instead of
    through the async removal thread because "the DE engine is using
    this information to discard prevoius I/O errors".  However, the fact
    that vdev_geom_io_intr was never actually sending the events until
    now, and that vdev_geom_orphan never sent them at all, and that
    vdev_geom_orphan usually gets called about 2 seconds after the
    actual removal, means that FreeBSD's userland can cope with a late
    event just fine.

Details

Provenance
asomersAuthored on
Parents
rS260516: Fix netmap emulation when NICs attached to a VALE switch have a different
Branches
Unknown
Tags
Unknown

Event Timeline