svn commit: r269407 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys
Andriy Gapon
avg at FreeBSD.org
Mon Oct 20 22:55:18 UTC 2014
On 02/08/2014 02:16, Steven Hartland wrote:
> Author: smh
> Date: Fri Aug 1 23:16:48 2014
> New Revision: 269407
> URL: http://svnweb.freebsd.org/changeset/base/269407
>
> Log:
> Don't return ZIO_PIPELINE_CONTINUE from vdev_op_io_start methods
>
> This prevents recursion of vdev_queue_io_done as per r265321 but
> using a different method as recommended on the openzfs list.
>
> We now use zio_interrupt(zio) and return ZIO_PIPELINE_STOP instead
> of returning ZIO_PIPELINE_CONTINUE from vdev_*_io_start methods.
>
> zio_vdev_io_start now ASSERTS the that vdev_op_io_start returns
> ZIO_PIPELINE_STOP to ensure future changes don't reintroduce
> ZIO_PIPELINE_CONTINUE returns.
Steve,
it seems that the issue is applicable to OpenZFS in general, but unfortunately,
as far as I can see, it's been applied only to FreeBSD.
Now, I see the following bug report and a proposed fix:
https://www.illumos.org/projects/illumos-gate//issues/5244
https://reviews.csiden.org/r/119/
I am not 100% sure, but it seems that those upstream changes could fix the
problem that you've found.
What do you think?
Thanks!
> Cleanup flow in vdev_geom_io_start while I'm here.
>
> Also fix some cases not using SET_ERROR(..)
>
> MFC after: 2 weeks
> X-MFC-With: r265321
>
> Modified:
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Fri Aug 1 23:16:48 2014 (r269407)
> @@ -208,7 +208,6 @@ enum zio_flag {
> ZIO_FLAG_NOPWRITE = 1 << 26,
> ZIO_FLAG_REEXECUTED = 1 << 27,
> ZIO_FLAG_DELEGATED = 1 << 28,
> - ZIO_FLAG_QUEUE_IO_DONE = 1 << 29,
> };
>
> #define ZIO_FLAG_MUSTSUCCEED 0
> @@ -363,7 +362,7 @@ typedef struct zio_transform {
> struct zio_transform *zt_next;
> } zio_transform_t;
>
> -typedef int zio_pipe_stage_t(zio_t **ziop);
> +typedef int zio_pipe_stage_t(zio_t *zio);
>
> /*
> * The io_reexecute flags are distinct from io_flags because the child must
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -684,7 +684,7 @@ vdev_disk_io_intr(buf_t *bp)
> * Rather than teach the rest of the stack about other error
> * possibilities (EFAULT, etc), we normalize the error value here.
> */
> - zio->io_error = (geterror(bp) != 0 ? EIO : 0);
> + zio->io_error = (geterror(bp) != 0 ? SET_ERROR(EIO) : 0);
>
> if (zio->io_error == 0 && bp->b_resid != 0)
> zio->io_error = SET_ERROR(EIO);
> @@ -730,15 +730,17 @@ vdev_disk_io_start(zio_t *zio)
> * Nothing to be done here but return failure.
> */
> if (dvd == NULL || (dvd->vd_ldi_offline && dvd->vd_lh == NULL)) {
> - zio->io_error = ENXIO;
> - return (ZIO_PIPELINE_CONTINUE);
> + zio->io_error = SET_ERROR(ENXIO);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> if (zio->io_type == ZIO_TYPE_IOCTL) {
> /* XXPOLICY */
> if (!vdev_readable(vd)) {
> zio->io_error = SET_ERROR(ENXIO);
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> switch (zio->io_cmd) {
> @@ -790,7 +792,8 @@ vdev_disk_io_start(zio_t *zio)
> zio->io_error = SET_ERROR(ENOTSUP);
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> vb = kmem_alloc(sizeof (vdev_buf_t), KM_SLEEP);
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -164,7 +164,8 @@ vdev_file_io_start(zio_t *zio)
>
> if (!vdev_readable(vd)) {
> zio->io_error = SET_ERROR(ENXIO);
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> vf = vd->vdev_tsd;
> @@ -180,7 +181,8 @@ vdev_file_io_start(zio_t *zio)
> zio->io_error = SET_ERROR(ENOTSUP);
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> zio->io_error = vn_rdwr(zio->io_type == ZIO_TYPE_READ ?
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -749,7 +749,7 @@ vdev_geom_io_intr(struct bio *bp)
> vd = zio->io_vd;
> zio->io_error = bp->bio_error;
> if (zio->io_error == 0 && bp->bio_resid != 0)
> - zio->io_error = EIO;
> + zio->io_error = SET_ERROR(EIO);
>
> switch(zio->io_error) {
> case ENOTSUP:
> @@ -803,37 +803,38 @@ vdev_geom_io_start(zio_t *zio)
> /* XXPOLICY */
> if (!vdev_readable(vd)) {
> zio->io_error = SET_ERROR(ENXIO);
> - return (ZIO_PIPELINE_CONTINUE);
> - }
> -
> - switch (zio->io_cmd) {
> - case DKIOCFLUSHWRITECACHE:
> - if (zfs_nocacheflush || vdev_geom_bio_flush_disable)
> - break;
> - if (vd->vdev_nowritecache) {
> + } else {
> + switch (zio->io_cmd) {
> + case DKIOCFLUSHWRITECACHE:
> + if (zfs_nocacheflush || vdev_geom_bio_flush_disable)
> + break;
> + if (vd->vdev_nowritecache) {
> + zio->io_error = SET_ERROR(ENOTSUP);
> + break;
> + }
> + goto sendreq;
> + default:
> zio->io_error = SET_ERROR(ENOTSUP);
> - break;
> }
> - goto sendreq;
> - default:
> - zio->io_error = SET_ERROR(ENOTSUP);
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> case ZIO_TYPE_FREE:
> - if (vdev_geom_bio_delete_disable)
> - return (ZIO_PIPELINE_CONTINUE);
> -
> if (vd->vdev_notrim) {
> zio->io_error = SET_ERROR(ENOTSUP);
> - return (ZIO_PIPELINE_CONTINUE);
> + } else if (!vdev_geom_bio_delete_disable) {
> + goto sendreq;
> }
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
> sendreq:
> cp = vd->vdev_tsd;
> if (cp == NULL) {
> zio->io_error = SET_ERROR(ENXIO);
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
> bp = g_alloc_bio();
> bp->bio_caller1 = zio;
> @@ -852,14 +853,11 @@ sendreq:
> bp->bio_length = zio->io_size;
> break;
> case ZIO_TYPE_IOCTL:
> - if (zio->io_cmd == DKIOCFLUSHWRITECACHE) {
> - bp->bio_cmd = BIO_FLUSH;
> - bp->bio_flags |= BIO_ORDERED;
> - bp->bio_data = NULL;
> - bp->bio_offset = cp->provider->mediasize;
> - bp->bio_length = 0;
> - break;
> - }
> + bp->bio_cmd = BIO_FLUSH;
> + bp->bio_flags |= BIO_ORDERED;
> + bp->bio_data = NULL;
> + bp->bio_offset = cp->provider->mediasize;
> + bp->bio_length = 0;
> break;
> }
> bp->bio_done = vdev_geom_io_intr;
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -450,7 +450,8 @@ vdev_mirror_io_start(zio_t *zio)
> zio->io_type, zio->io_priority, 0,
> vdev_mirror_scrub_done, mc));
> }
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
> /*
> * For normal reads just pick one child.
> @@ -477,7 +478,8 @@ vdev_mirror_io_start(zio_t *zio)
> c++;
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> static int
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -71,7 +71,8 @@ static int
> vdev_missing_io_start(zio_t *zio)
> {
> zio->io_error = SET_ERROR(ENOTSUP);
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> /* ARGSUSED */
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -796,25 +796,14 @@ vdev_queue_io_done(zio_t *zio)
>
> vq->vq_io_complete_ts = gethrtime();
>
> - if (zio->io_flags & ZIO_FLAG_QUEUE_IO_DONE) {
> - /*
> - * Executing from a previous vdev_queue_io_done so
> - * to avoid recursion we just unlock and return.
> - */
> - mutex_exit(&vq->vq_lock);
> - return;
> - }
> -
> while ((nio = vdev_queue_io_to_issue(vq)) != NULL) {
> mutex_exit(&vq->vq_lock);
> - nio->io_flags |= ZIO_FLAG_QUEUE_IO_DONE;
> if (nio->io_done == vdev_queue_agg_io_done) {
> zio_nowait(nio);
> } else {
> zio_vdev_io_reissue(nio);
> zio_execute(nio);
> }
> - nio->io_flags &= ~ZIO_FLAG_QUEUE_IO_DONE;
> mutex_enter(&vq->vq_lock);
> }
>
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -1755,7 +1755,9 @@ vdev_raidz_io_start(zio_t *zio)
> zio->io_type, zio->io_priority, 0,
> vdev_raidz_child_done, rc));
> }
> - return (ZIO_PIPELINE_CONTINUE);
> +
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> if (zio->io_type == ZIO_TYPE_WRITE) {
> @@ -1787,7 +1789,8 @@ vdev_raidz_io_start(zio_t *zio)
> ZIO_FLAG_NODATA | ZIO_FLAG_OPTIONAL, NULL, NULL));
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
> ASSERT(zio->io_type == ZIO_TYPE_READ);
> @@ -1827,7 +1830,8 @@ vdev_raidz_io_start(zio_t *zio)
> }
> }
>
> - return (ZIO_PIPELINE_CONTINUE);
> + zio_interrupt(zio);
> + return (ZIO_PIPELINE_STOP);
> }
>
>
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Fri Aug 1 23:06:38 2014 (r269406)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Fri Aug 1 23:16:48 2014 (r269407)
> @@ -1038,9 +1038,8 @@ zio_shrink(zio_t *zio, uint64_t size)
> */
>
> static int
> -zio_read_bp_init(zio_t **ziop)
> +zio_read_bp_init(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF &&
> @@ -1073,9 +1072,8 @@ zio_read_bp_init(zio_t **ziop)
> }
>
> static int
> -zio_write_bp_init(zio_t **ziop)
> +zio_write_bp_init(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> spa_t *spa = zio->io_spa;
> zio_prop_t *zp = &zio->io_prop;
> enum zio_compress compress = zp->zp_compress;
> @@ -1255,9 +1253,8 @@ zio_write_bp_init(zio_t **ziop)
> }
>
> static int
> -zio_free_bp_init(zio_t **ziop)
> +zio_free_bp_init(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> if (zio->io_child_type == ZIO_CHILD_LOGICAL) {
> @@ -1340,10 +1337,8 @@ zio_taskq_member(zio_t *zio, zio_taskq_t
> }
>
> static int
> -zio_issue_async(zio_t **ziop)
> +zio_issue_async(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> -
> zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE);
>
> return (ZIO_PIPELINE_STOP);
> @@ -1411,7 +1406,7 @@ zio_execute(zio_t *zio)
> }
>
> zio->io_stage = stage;
> - rv = zio_pipeline[highbit64(stage) - 1](&zio);
> + rv = zio_pipeline[highbit64(stage) - 1](zio);
>
> if (rv == ZIO_PIPELINE_STOP)
> return;
> @@ -1845,9 +1840,8 @@ zio_gang_tree_issue(zio_t *pio, zio_gang
> }
>
> static int
> -zio_gang_assemble(zio_t **ziop)
> +zio_gang_assemble(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == NULL);
> @@ -1861,9 +1855,8 @@ zio_gang_assemble(zio_t **ziop)
> }
>
> static int
> -zio_gang_issue(zio_t **ziop)
> +zio_gang_issue(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_DONE))
> @@ -1997,9 +1990,8 @@ zio_write_gang_block(zio_t *pio)
> * writes) and as a result is mutually exclusive with dedup.
> */
> static int
> -zio_nop_write(zio_t **ziop)
> +zio_nop_write(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
> blkptr_t *bp_orig = &zio->io_bp_orig;
> zio_prop_t *zp = &zio->io_prop;
> @@ -2070,9 +2062,8 @@ zio_ddt_child_read_done(zio_t *zio)
> }
>
> static int
> -zio_ddt_read_start(zio_t **ziop)
> +zio_ddt_read_start(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> ASSERT(BP_GET_DEDUP(bp));
> @@ -2114,9 +2105,8 @@ zio_ddt_read_start(zio_t **ziop)
> }
>
> static int
> -zio_ddt_read_done(zio_t **ziop)
> +zio_ddt_read_done(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
>
> if (zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_DONE))
> @@ -2284,9 +2274,8 @@ zio_ddt_ditto_write_done(zio_t *zio)
> }
>
> static int
> -zio_ddt_write(zio_t **ziop)
> +zio_ddt_write(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> spa_t *spa = zio->io_spa;
> blkptr_t *bp = zio->io_bp;
> uint64_t txg = zio->io_txg;
> @@ -2397,9 +2386,8 @@ zio_ddt_write(zio_t **ziop)
> ddt_entry_t *freedde; /* for debugging */
>
> static int
> -zio_ddt_free(zio_t **ziop)
> +zio_ddt_free(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> spa_t *spa = zio->io_spa;
> blkptr_t *bp = zio->io_bp;
> ddt_t *ddt = ddt_select(spa, bp);
> @@ -2424,9 +2412,8 @@ zio_ddt_free(zio_t **ziop)
> * ==========================================================================
> */
> static int
> -zio_dva_allocate(zio_t **ziop)
> +zio_dva_allocate(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> spa_t *spa = zio->io_spa;
> metaslab_class_t *mc = spa_normal_class(spa);
> blkptr_t *bp = zio->io_bp;
> @@ -2468,19 +2455,16 @@ zio_dva_allocate(zio_t **ziop)
> }
>
> static int
> -zio_dva_free(zio_t **ziop)
> +zio_dva_free(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> -
> metaslab_free(zio->io_spa, zio->io_bp, zio->io_txg, B_FALSE);
>
> return (ZIO_PIPELINE_CONTINUE);
> }
>
> static int
> -zio_dva_claim(zio_t **ziop)
> +zio_dva_claim(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> int error;
>
> error = metaslab_claim(zio->io_spa, zio->io_bp, zio->io_txg);
> @@ -2574,12 +2558,12 @@ zio_free_zil(spa_t *spa, uint64_t txg, b
> * ==========================================================================
> */
> static int
> -zio_vdev_io_start(zio_t **ziop)
> +zio_vdev_io_start(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> vdev_t *vd = zio->io_vd;
> uint64_t align;
> spa_t *spa = zio->io_spa;
> + int ret;
>
> ASSERT(zio->io_error == 0);
> ASSERT(zio->io_child_error[ZIO_CHILD_VDEV] == 0);
> @@ -2690,7 +2674,6 @@ zio_vdev_io_start(zio_t **ziop)
> case ZIO_TYPE_FREE:
> if ((zio = vdev_queue_io(zio)) == NULL)
> return (ZIO_PIPELINE_STOP);
> - *ziop = zio;
>
> if (!vdev_accessible(vd, zio)) {
> zio->io_error = SET_ERROR(ENXIO);
> @@ -2710,13 +2693,15 @@ zio_vdev_io_start(zio_t **ziop)
> return (ZIO_PIPELINE_STOP);
> }
>
> - return (vd->vdev_ops->vdev_op_io_start(zio));
> + ret = vd->vdev_ops->vdev_op_io_start(zio);
> + ASSERT(ret == ZIO_PIPELINE_STOP);
> +
> + return (ret);
> }
>
> static int
> -zio_vdev_io_done(zio_t **ziop)
> +zio_vdev_io_done(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> vdev_t *vd = zio->io_vd;
> vdev_ops_t *ops = vd ? vd->vdev_ops : &vdev_mirror_ops;
> boolean_t unexpected_error = B_FALSE;
> @@ -2794,9 +2779,8 @@ zio_vsd_default_cksum_report(zio_t *zio,
> }
>
> static int
> -zio_vdev_io_assess(zio_t **ziop)
> +zio_vdev_io_assess(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> vdev_t *vd = zio->io_vd;
>
> if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE))
> @@ -2911,9 +2895,8 @@ zio_vdev_io_bypass(zio_t *zio)
> * ==========================================================================
> */
> static int
> -zio_checksum_generate(zio_t **ziop)
> +zio_checksum_generate(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
> enum zio_checksum checksum;
>
> @@ -2943,9 +2926,8 @@ zio_checksum_generate(zio_t **ziop)
> }
>
> static int
> -zio_checksum_verify(zio_t **ziop)
> +zio_checksum_verify(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> zio_bad_cksum_t info;
> blkptr_t *bp = zio->io_bp;
> int error;
> @@ -3016,9 +2998,8 @@ zio_worst_error(int e1, int e2)
> * ==========================================================================
> */
> static int
> -zio_ready(zio_t **ziop)
> +zio_ready(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> blkptr_t *bp = zio->io_bp;
> zio_t *pio, *pio_next;
>
> @@ -3075,9 +3056,8 @@ zio_ready(zio_t **ziop)
> }
>
> static int
> -zio_done(zio_t **ziop)
> +zio_done(zio_t *zio)
> {
> - zio_t *zio = *ziop;
> spa_t *spa = zio->io_spa;
> zio_t *lio = zio->io_logical;
> blkptr_t *bp = zio->io_bp;
>
--
Andriy Gapon
More information about the svn-src-all
mailing list