diff options
author | mav <mav@FreeBSD.org> | 2016-03-20 20:12:14 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2016-03-20 20:12:14 +0000 |
commit | 495e63a6681b828671980c26d135f5ed2af0d6c2 (patch) | |
tree | 8794aa6f347757b9c47161ed17bf65e0dbb5fbc1 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c | |
parent | e727ce4355229a44282d4a47836d884f81341982 (diff) | |
download | FreeBSD-src-495e63a6681b828671980c26d135f5ed2af0d6c2.zip FreeBSD-src-495e63a6681b828671980c26d135f5ed2af0d6c2.tar.gz |
MFC r274304 (by delphij): MFV r274272 and diff reduction with upstream.
Illumos issue:
5244 zio pipeline callers should explicitly invoke next stage
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c')
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c index ad21d6e..01ef756 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright (c) 2011, 2014 by Delphix. All rights reserved. */ #include <sys/zfs_context.h> @@ -156,7 +156,7 @@ vdev_file_close(vdev_t *vd) vd->vdev_tsd = NULL; } -static int +static void vdev_file_io_start(zio_t *zio) { vdev_t *vd = zio->io_vd; @@ -167,7 +167,7 @@ vdev_file_io_start(zio_t *zio) if (!vdev_readable(vd)) { zio->io_error = SET_ERROR(ENXIO); zio_interrupt(zio); - return (ZIO_PIPELINE_STOP); + return; } vf = vd->vdev_tsd; @@ -183,8 +183,8 @@ vdev_file_io_start(zio_t *zio) zio->io_error = SET_ERROR(ENOTSUP); } - zio_interrupt(zio); - return (ZIO_PIPELINE_STOP); + zio_execute(zio); + return; } ASSERT(zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE); @@ -198,7 +198,10 @@ vdev_file_io_start(zio_t *zio) zio_interrupt(zio); - return (ZIO_PIPELINE_STOP); +#ifdef illumos + VERIFY3U(taskq_dispatch(system_taskq, vdev_file_io_strategy, bp, + TQ_SLEEP), !=, 0); +#endif } /* ARGSUSED */ |