diff options
author | pjd <pjd@FreeBSD.org> | 2009-10-07 20:56:15 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2009-10-07 20:56:15 +0000 |
commit | 74893f85ef4393341db97e91a366055094b800d5 (patch) | |
tree | 600a5943ab4ec58599c5473689e7efb279665ef8 /sys/cddl/contrib | |
parent | 6bf08525f08d64b091dd3d3c374207338623fd6f (diff) | |
download | FreeBSD-src-74893f85ef4393341db97e91a366055094b800d5.zip FreeBSD-src-74893f85ef4393341db97e91a366055094b800d5.tar.gz |
On FreeBSD it is enough to report provider removal when orphan event is
received, we don't have to do it on every ENXIO error in I/O path.
Solaris has no GEOM so they have to handle it in a less clean way.
MFC after: 3 days
Diffstat (limited to 'sys/cddl/contrib')
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c | 20 |
1 files changed, 0 insertions, 20 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c index 869b4ee..f0f9c6f 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c @@ -662,26 +662,6 @@ sendreq: static void vdev_geom_io_done(zio_t *zio) { - - /* - * If the device returned ENXIO, then attempt we should verify if GEOM - * provider has been removed. If this is the case, then we trigger an - * asynchronous removal of the device. - */ - if (zio->io_error == ENXIO) { - vdev_t *vd = zio->io_vd; - vdev_geom_ctx_t *ctx; - struct g_provider *pp = NULL; - - ctx = vd->vdev_tsd; - if (ctx != NULL && ctx->gc_consumer != NULL) - pp = ctx->gc_consumer->provider; - - if (pp == NULL || (pp->flags & G_PF_ORPHAN)) { - vd->vdev_remove_wanted = B_TRUE; - spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); - } - } } vdev_ops_t vdev_geom_ops = { |