aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2009-10-07 20:56:15 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2009-10-07 20:56:15 +0000
commit3a6c0cbf26f01dce8309de5ff19927b5690a86a3 (patch)
tree600a5943ab4ec58599c5473689e7efb279665ef8 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
parent2ada529a14433d1dba5348906a4f3b5f5573ac5e (diff)
downloadsrc-3a6c0cbf26f01dce8309de5ff19927b5690a86a3.tar.gz
src-3a6c0cbf26f01dce8309de5ff19927b5690a86a3.zip
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
Notes
Notes: svn path=/head/; revision=197843
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c20
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 869b4ee87b64..f0f9c6fa693a 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 = {