]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/blob - sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
MFC ZFS version 28 and related revisions:
[FreeBSD/stable/8.git] / sys / cddl / contrib / opensolaris / uts / common / fs / zfs / zio.c
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23  */
24
25 #include <sys/zfs_context.h>
26 #include <sys/fm/fs/zfs.h>
27 #include <sys/spa.h>
28 #include <sys/txg.h>
29 #include <sys/spa_impl.h>
30 #include <sys/vdev_impl.h>
31 #include <sys/zio_impl.h>
32 #include <sys/zio_compress.h>
33 #include <sys/zio_checksum.h>
34 #include <sys/dmu_objset.h>
35 #include <sys/arc.h>
36 #include <sys/ddt.h>
37
38 SYSCTL_DECL(_vfs_zfs);
39 SYSCTL_NODE(_vfs_zfs, OID_AUTO, zio, CTLFLAG_RW, 0, "ZFS ZIO");
40 static int zio_use_uma = 0;
41 TUNABLE_INT("vfs.zfs.zio.use_uma", &zio_use_uma);
42 SYSCTL_INT(_vfs_zfs_zio, OID_AUTO, use_uma, CTLFLAG_RDTUN, &zio_use_uma, 0,
43     "Use uma(9) for ZIO allocations");
44
45 /*
46  * ==========================================================================
47  * I/O priority table
48  * ==========================================================================
49  */
50 uint8_t zio_priority_table[ZIO_PRIORITY_TABLE_SIZE] = {
51         0,      /* ZIO_PRIORITY_NOW             */
52         0,      /* ZIO_PRIORITY_SYNC_READ       */
53         0,      /* ZIO_PRIORITY_SYNC_WRITE      */
54         0,      /* ZIO_PRIORITY_LOG_WRITE       */
55         1,      /* ZIO_PRIORITY_CACHE_FILL      */
56         1,      /* ZIO_PRIORITY_AGG             */
57         4,      /* ZIO_PRIORITY_FREE            */
58         4,      /* ZIO_PRIORITY_ASYNC_WRITE     */
59         6,      /* ZIO_PRIORITY_ASYNC_READ      */
60         10,     /* ZIO_PRIORITY_RESILVER        */
61         20,     /* ZIO_PRIORITY_SCRUB           */
62         2,      /* ZIO_PRIORITY_DDT_PREFETCH    */
63 };
64
65 /*
66  * ==========================================================================
67  * I/O type descriptions
68  * ==========================================================================
69  */
70 char *zio_type_name[ZIO_TYPES] = {
71         "zio_null", "zio_read", "zio_write", "zio_free", "zio_claim",
72         "zio_ioctl"
73 };
74
75 /*
76  * ==========================================================================
77  * I/O kmem caches
78  * ==========================================================================
79  */
80 kmem_cache_t *zio_cache;
81 kmem_cache_t *zio_link_cache;
82 kmem_cache_t *zio_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
83 kmem_cache_t *zio_data_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
84
85 #ifdef _KERNEL
86 extern vmem_t *zio_alloc_arena;
87 #endif
88
89 /*
90  * An allocating zio is one that either currently has the DVA allocate
91  * stage set or will have it later in its lifetime.
92  */
93 #define IO_IS_ALLOCATING(zio) ((zio)->io_orig_pipeline & ZIO_STAGE_DVA_ALLOCATE)
94
95 boolean_t       zio_requeue_io_start_cut_in_line = B_TRUE;
96
97 #ifdef ZFS_DEBUG
98 int zio_buf_debug_limit = 16384;
99 #else
100 int zio_buf_debug_limit = 0;
101 #endif
102
103 void
104 zio_init(void)
105 {
106         size_t c;
107         zio_cache = kmem_cache_create("zio_cache",
108             sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0);
109         zio_link_cache = kmem_cache_create("zio_link_cache",
110             sizeof (zio_link_t), 0, NULL, NULL, NULL, NULL, NULL, 0);
111
112         /*
113          * For small buffers, we want a cache for each multiple of
114          * SPA_MINBLOCKSIZE.  For medium-size buffers, we want a cache
115          * for each quarter-power of 2.  For large buffers, we want
116          * a cache for each multiple of PAGESIZE.
117          */
118         for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) {
119                 size_t size = (c + 1) << SPA_MINBLOCKSHIFT;
120                 size_t p2 = size;
121                 size_t align = 0;
122                 size_t cflags = (size > zio_buf_debug_limit) ? KMC_NODEBUG : 0;
123
124                 while (p2 & (p2 - 1))
125                         p2 &= p2 - 1;
126
127                 if (size <= 4 * SPA_MINBLOCKSIZE) {
128                         align = SPA_MINBLOCKSIZE;
129                 } else if (P2PHASE(size, PAGESIZE) == 0) {
130                         align = PAGESIZE;
131                 } else if (P2PHASE(size, p2 >> 2) == 0) {
132                         align = p2 >> 2;
133                 }
134
135                 if (align != 0) {
136                         char name[36];
137                         (void) sprintf(name, "zio_buf_%lu", (ulong_t)size);
138                         zio_buf_cache[c] = kmem_cache_create(name, size,
139                             align, NULL, NULL, NULL, NULL, NULL, cflags);
140
141                         /*
142                          * Since zio_data bufs do not appear in crash dumps, we
143                          * pass KMC_NOTOUCH so that no allocator metadata is
144                          * stored with the buffers.
145                          */
146                         (void) sprintf(name, "zio_data_buf_%lu", (ulong_t)size);
147                         zio_data_buf_cache[c] = kmem_cache_create(name, size,
148                             align, NULL, NULL, NULL, NULL, NULL,
149                             cflags | KMC_NOTOUCH);
150                 }
151         }
152
153         while (--c != 0) {
154                 ASSERT(zio_buf_cache[c] != NULL);
155                 if (zio_buf_cache[c - 1] == NULL)
156                         zio_buf_cache[c - 1] = zio_buf_cache[c];
157
158                 ASSERT(zio_data_buf_cache[c] != NULL);
159                 if (zio_data_buf_cache[c - 1] == NULL)
160                         zio_data_buf_cache[c - 1] = zio_data_buf_cache[c];
161         }
162
163         zio_inject_init();
164 }
165
166 void
167 zio_fini(void)
168 {
169         size_t c;
170         kmem_cache_t *last_cache = NULL;
171         kmem_cache_t *last_data_cache = NULL;
172
173         for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) {
174                 if (zio_buf_cache[c] != last_cache) {
175                         last_cache = zio_buf_cache[c];
176                         kmem_cache_destroy(zio_buf_cache[c]);
177                 }
178                 zio_buf_cache[c] = NULL;
179
180                 if (zio_data_buf_cache[c] != last_data_cache) {
181                         last_data_cache = zio_data_buf_cache[c];
182                         kmem_cache_destroy(zio_data_buf_cache[c]);
183                 }
184                 zio_data_buf_cache[c] = NULL;
185         }
186
187         kmem_cache_destroy(zio_link_cache);
188         kmem_cache_destroy(zio_cache);
189
190         zio_inject_fini();
191 }
192
193 /*
194  * ==========================================================================
195  * Allocate and free I/O buffers
196  * ==========================================================================
197  */
198
199 /*
200  * Use zio_buf_alloc to allocate ZFS metadata.  This data will appear in a
201  * crashdump if the kernel panics, so use it judiciously.  Obviously, it's
202  * useful to inspect ZFS metadata, but if possible, we should avoid keeping
203  * excess / transient data in-core during a crashdump.
204  */
205 void *
206 zio_buf_alloc(size_t size)
207 {
208         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
209
210         ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
211
212         if (zio_use_uma)
213                 return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE));
214         else
215                 return (kmem_alloc(size, KM_SLEEP));
216 }
217
218 /*
219  * Use zio_data_buf_alloc to allocate data.  The data will not appear in a
220  * crashdump if the kernel panics.  This exists so that we will limit the amount
221  * of ZFS data that shows up in a kernel crashdump.  (Thus reducing the amount
222  * of kernel heap dumped to disk when the kernel panics)
223  */
224 void *
225 zio_data_buf_alloc(size_t size)
226 {
227         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
228
229         ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
230
231         if (zio_use_uma)
232                 return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE));
233         else
234                 return (kmem_alloc(size, KM_SLEEP));
235 }
236
237 void
238 zio_buf_free(void *buf, size_t size)
239 {
240         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
241
242         ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
243
244         if (zio_use_uma)
245                 kmem_cache_free(zio_buf_cache[c], buf);
246         else
247                 kmem_free(buf, size);
248 }
249
250 void
251 zio_data_buf_free(void *buf, size_t size)
252 {
253         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
254
255         ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
256
257         if (zio_use_uma)
258                 kmem_cache_free(zio_data_buf_cache[c], buf);
259         else
260                 kmem_free(buf, size);
261 }
262
263 /*
264  * ==========================================================================
265  * Push and pop I/O transform buffers
266  * ==========================================================================
267  */
268 static void
269 zio_push_transform(zio_t *zio, void *data, uint64_t size, uint64_t bufsize,
270         zio_transform_func_t *transform)
271 {
272         zio_transform_t *zt = kmem_alloc(sizeof (zio_transform_t), KM_SLEEP);
273
274         zt->zt_orig_data = zio->io_data;
275         zt->zt_orig_size = zio->io_size;
276         zt->zt_bufsize = bufsize;
277         zt->zt_transform = transform;
278
279         zt->zt_next = zio->io_transform_stack;
280         zio->io_transform_stack = zt;
281
282         zio->io_data = data;
283         zio->io_size = size;
284 }
285
286 static void
287 zio_pop_transforms(zio_t *zio)
288 {
289         zio_transform_t *zt;
290
291         while ((zt = zio->io_transform_stack) != NULL) {
292                 if (zt->zt_transform != NULL)
293                         zt->zt_transform(zio,
294                             zt->zt_orig_data, zt->zt_orig_size);
295
296                 if (zt->zt_bufsize != 0)
297                         zio_buf_free(zio->io_data, zt->zt_bufsize);
298
299                 zio->io_data = zt->zt_orig_data;
300                 zio->io_size = zt->zt_orig_size;
301                 zio->io_transform_stack = zt->zt_next;
302
303                 kmem_free(zt, sizeof (zio_transform_t));
304         }
305 }
306
307 /*
308  * ==========================================================================
309  * I/O transform callbacks for subblocks and decompression
310  * ==========================================================================
311  */
312 static void
313 zio_subblock(zio_t *zio, void *data, uint64_t size)
314 {
315         ASSERT(zio->io_size > size);
316
317         if (zio->io_type == ZIO_TYPE_READ)
318                 bcopy(zio->io_data, data, size);
319 }
320
321 static void
322 zio_decompress(zio_t *zio, void *data, uint64_t size)
323 {
324         if (zio->io_error == 0 &&
325             zio_decompress_data(BP_GET_COMPRESS(zio->io_bp),
326             zio->io_data, data, zio->io_size, size) != 0)
327                 zio->io_error = EIO;
328 }
329
330 /*
331  * ==========================================================================
332  * I/O parent/child relationships and pipeline interlocks
333  * ==========================================================================
334  */
335 /*
336  * NOTE - Callers to zio_walk_parents() and zio_walk_children must
337  *        continue calling these functions until they return NULL.
338  *        Otherwise, the next caller will pick up the list walk in
339  *        some indeterminate state.  (Otherwise every caller would
340  *        have to pass in a cookie to keep the state represented by
341  *        io_walk_link, which gets annoying.)
342  */
343 zio_t *
344 zio_walk_parents(zio_t *cio)
345 {
346         zio_link_t *zl = cio->io_walk_link;
347         list_t *pl = &cio->io_parent_list;
348
349         zl = (zl == NULL) ? list_head(pl) : list_next(pl, zl);
350         cio->io_walk_link = zl;
351
352         if (zl == NULL)
353                 return (NULL);
354
355         ASSERT(zl->zl_child == cio);
356         return (zl->zl_parent);
357 }
358
359 zio_t *
360 zio_walk_children(zio_t *pio)
361 {
362         zio_link_t *zl = pio->io_walk_link;
363         list_t *cl = &pio->io_child_list;
364
365         zl = (zl == NULL) ? list_head(cl) : list_next(cl, zl);
366         pio->io_walk_link = zl;
367
368         if (zl == NULL)
369                 return (NULL);
370
371         ASSERT(zl->zl_parent == pio);
372         return (zl->zl_child);
373 }
374
375 zio_t *
376 zio_unique_parent(zio_t *cio)
377 {
378         zio_t *pio = zio_walk_parents(cio);
379
380         VERIFY(zio_walk_parents(cio) == NULL);
381         return (pio);
382 }
383
384 void
385 zio_add_child(zio_t *pio, zio_t *cio)
386 {
387         zio_link_t *zl = kmem_cache_alloc(zio_link_cache, KM_SLEEP);
388
389         /*
390          * Logical I/Os can have logical, gang, or vdev children.
391          * Gang I/Os can have gang or vdev children.
392          * Vdev I/Os can only have vdev children.
393          * The following ASSERT captures all of these constraints.
394          */
395         ASSERT(cio->io_child_type <= pio->io_child_type);
396
397         zl->zl_parent = pio;
398         zl->zl_child = cio;
399
400         mutex_enter(&cio->io_lock);
401         mutex_enter(&pio->io_lock);
402
403         ASSERT(pio->io_state[ZIO_WAIT_DONE] == 0);
404
405         for (int w = 0; w < ZIO_WAIT_TYPES; w++)
406                 pio->io_children[cio->io_child_type][w] += !cio->io_state[w];
407
408         list_insert_head(&pio->io_child_list, zl);
409         list_insert_head(&cio->io_parent_list, zl);
410
411         pio->io_child_count++;
412         cio->io_parent_count++;
413
414         mutex_exit(&pio->io_lock);
415         mutex_exit(&cio->io_lock);
416 }
417
418 static void
419 zio_remove_child(zio_t *pio, zio_t *cio, zio_link_t *zl)
420 {
421         ASSERT(zl->zl_parent == pio);
422         ASSERT(zl->zl_child == cio);
423
424         mutex_enter(&cio->io_lock);
425         mutex_enter(&pio->io_lock);
426
427         list_remove(&pio->io_child_list, zl);
428         list_remove(&cio->io_parent_list, zl);
429
430         pio->io_child_count--;
431         cio->io_parent_count--;
432
433         mutex_exit(&pio->io_lock);
434         mutex_exit(&cio->io_lock);
435
436         kmem_cache_free(zio_link_cache, zl);
437 }
438
439 static boolean_t
440 zio_wait_for_children(zio_t *zio, enum zio_child child, enum zio_wait_type wait)
441 {
442         uint64_t *countp = &zio->io_children[child][wait];
443         boolean_t waiting = B_FALSE;
444
445         mutex_enter(&zio->io_lock);
446         ASSERT(zio->io_stall == NULL);
447         if (*countp != 0) {
448                 zio->io_stage >>= 1;
449                 zio->io_stall = countp;
450                 waiting = B_TRUE;
451         }
452         mutex_exit(&zio->io_lock);
453
454         return (waiting);
455 }
456
457 static void
458 zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait)
459 {
460         uint64_t *countp = &pio->io_children[zio->io_child_type][wait];
461         int *errorp = &pio->io_child_error[zio->io_child_type];
462
463         mutex_enter(&pio->io_lock);
464         if (zio->io_error && !(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE))
465                 *errorp = zio_worst_error(*errorp, zio->io_error);
466         pio->io_reexecute |= zio->io_reexecute;
467         ASSERT3U(*countp, >, 0);
468         if (--*countp == 0 && pio->io_stall == countp) {
469                 pio->io_stall = NULL;
470                 mutex_exit(&pio->io_lock);
471                 zio_execute(pio);
472         } else {
473                 mutex_exit(&pio->io_lock);
474         }
475 }
476
477 static void
478 zio_inherit_child_errors(zio_t *zio, enum zio_child c)
479 {
480         if (zio->io_child_error[c] != 0 && zio->io_error == 0)
481                 zio->io_error = zio->io_child_error[c];
482 }
483
484 /*
485  * ==========================================================================
486  * Create the various types of I/O (read, write, free, etc)
487  * ==========================================================================
488  */
489 static zio_t *
490 zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
491     void *data, uint64_t size, zio_done_func_t *done, void *private,
492     zio_type_t type, int priority, enum zio_flag flags,
493     vdev_t *vd, uint64_t offset, const zbookmark_t *zb,
494     enum zio_stage stage, enum zio_stage pipeline)
495 {
496         zio_t *zio;
497
498         ASSERT3U(size, <=, SPA_MAXBLOCKSIZE);
499         ASSERT(P2PHASE(size, SPA_MINBLOCKSIZE) == 0);
500         ASSERT(P2PHASE(offset, SPA_MINBLOCKSIZE) == 0);
501
502         ASSERT(!vd || spa_config_held(spa, SCL_STATE_ALL, RW_READER));
503         ASSERT(!bp || !(flags & ZIO_FLAG_CONFIG_WRITER));
504         ASSERT(vd || stage == ZIO_STAGE_OPEN);
505
506         zio = kmem_cache_alloc(zio_cache, KM_SLEEP);
507         bzero(zio, sizeof (zio_t));
508
509         mutex_init(&zio->io_lock, NULL, MUTEX_DEFAULT, NULL);
510         cv_init(&zio->io_cv, NULL, CV_DEFAULT, NULL);
511
512         list_create(&zio->io_parent_list, sizeof (zio_link_t),
513             offsetof(zio_link_t, zl_parent_node));
514         list_create(&zio->io_child_list, sizeof (zio_link_t),
515             offsetof(zio_link_t, zl_child_node));
516
517         if (vd != NULL)
518                 zio->io_child_type = ZIO_CHILD_VDEV;
519         else if (flags & ZIO_FLAG_GANG_CHILD)
520                 zio->io_child_type = ZIO_CHILD_GANG;
521         else if (flags & ZIO_FLAG_DDT_CHILD)
522                 zio->io_child_type = ZIO_CHILD_DDT;
523         else
524                 zio->io_child_type = ZIO_CHILD_LOGICAL;
525
526         if (bp != NULL) {
527                 zio->io_bp = (blkptr_t *)bp;
528                 zio->io_bp_copy = *bp;
529                 zio->io_bp_orig = *bp;
530                 if (type != ZIO_TYPE_WRITE ||
531                     zio->io_child_type == ZIO_CHILD_DDT)
532                         zio->io_bp = &zio->io_bp_copy;  /* so caller can free */
533                 if (zio->io_child_type == ZIO_CHILD_LOGICAL)
534                         zio->io_logical = zio;
535                 if (zio->io_child_type > ZIO_CHILD_GANG && BP_IS_GANG(bp))
536                         pipeline |= ZIO_GANG_STAGES;
537         }
538
539         zio->io_spa = spa;
540         zio->io_txg = txg;
541         zio->io_done = done;
542         zio->io_private = private;
543         zio->io_type = type;
544         zio->io_priority = priority;
545         zio->io_vd = vd;
546         zio->io_offset = offset;
547         zio->io_orig_data = zio->io_data = data;
548         zio->io_orig_size = zio->io_size = size;
549         zio->io_orig_flags = zio->io_flags = flags;
550         zio->io_orig_stage = zio->io_stage = stage;
551         zio->io_orig_pipeline = zio->io_pipeline = pipeline;
552
553         zio->io_state[ZIO_WAIT_READY] = (stage >= ZIO_STAGE_READY);
554         zio->io_state[ZIO_WAIT_DONE] = (stage >= ZIO_STAGE_DONE);
555
556         if (zb != NULL)
557                 zio->io_bookmark = *zb;
558
559         if (pio != NULL) {
560                 if (zio->io_logical == NULL)
561                         zio->io_logical = pio->io_logical;
562                 if (zio->io_child_type == ZIO_CHILD_GANG)
563                         zio->io_gang_leader = pio->io_gang_leader;
564                 zio_add_child(pio, zio);
565         }
566
567         return (zio);
568 }
569
570 static void
571 zio_destroy(zio_t *zio)
572 {
573         list_destroy(&zio->io_parent_list);
574         list_destroy(&zio->io_child_list);
575         mutex_destroy(&zio->io_lock);
576         cv_destroy(&zio->io_cv);
577         kmem_cache_free(zio_cache, zio);
578 }
579
580 zio_t *
581 zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done,
582     void *private, enum zio_flag flags)
583 {
584         zio_t *zio;
585
586         zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private,
587             ZIO_TYPE_NULL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL,
588             ZIO_STAGE_OPEN, ZIO_INTERLOCK_PIPELINE);
589
590         return (zio);
591 }
592
593 zio_t *
594 zio_root(spa_t *spa, zio_done_func_t *done, void *private, enum zio_flag flags)
595 {
596         return (zio_null(NULL, spa, NULL, done, private, flags));
597 }
598
599 zio_t *
600 zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp,
601     void *data, uint64_t size, zio_done_func_t *done, void *private,
602     int priority, enum zio_flag flags, const zbookmark_t *zb)
603 {
604         zio_t *zio;
605
606         zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp,
607             data, size, done, private,
608             ZIO_TYPE_READ, priority, flags, NULL, 0, zb,
609             ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ?
610             ZIO_DDT_CHILD_READ_PIPELINE : ZIO_READ_PIPELINE);
611
612         return (zio);
613 }
614
615 zio_t *
616 zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
617     void *data, uint64_t size, const zio_prop_t *zp,
618     zio_done_func_t *ready, zio_done_func_t *done, void *private,
619     int priority, enum zio_flag flags, const zbookmark_t *zb)
620 {
621         zio_t *zio;
622
623         ASSERT(zp->zp_checksum >= ZIO_CHECKSUM_OFF &&
624             zp->zp_checksum < ZIO_CHECKSUM_FUNCTIONS &&
625             zp->zp_compress >= ZIO_COMPRESS_OFF &&
626             zp->zp_compress < ZIO_COMPRESS_FUNCTIONS &&
627             zp->zp_type < DMU_OT_NUMTYPES &&
628             zp->zp_level < 32 &&
629             zp->zp_copies > 0 &&
630             zp->zp_copies <= spa_max_replication(spa) &&
631             zp->zp_dedup <= 1 &&
632             zp->zp_dedup_verify <= 1);
633
634         zio = zio_create(pio, spa, txg, bp, data, size, done, private,
635             ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb,
636             ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ?
637             ZIO_DDT_CHILD_WRITE_PIPELINE : ZIO_WRITE_PIPELINE);
638
639         zio->io_ready = ready;
640         zio->io_prop = *zp;
641
642         return (zio);
643 }
644
645 zio_t *
646 zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, void *data,
647     uint64_t size, zio_done_func_t *done, void *private, int priority,
648     enum zio_flag flags, zbookmark_t *zb)
649 {
650         zio_t *zio;
651
652         zio = zio_create(pio, spa, txg, bp, data, size, done, private,
653             ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb,
654             ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE);
655
656         return (zio);
657 }
658
659 void
660 zio_write_override(zio_t *zio, blkptr_t *bp, int copies)
661 {
662         ASSERT(zio->io_type == ZIO_TYPE_WRITE);
663         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
664         ASSERT(zio->io_stage == ZIO_STAGE_OPEN);
665         ASSERT(zio->io_txg == spa_syncing_txg(zio->io_spa));
666
667         zio->io_prop.zp_copies = copies;
668         zio->io_bp_override = bp;
669 }
670
671 void
672 zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp)
673 {
674         bplist_append(&spa->spa_free_bplist[txg & TXG_MASK], bp);
675 }
676
677 zio_t *
678 zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
679     enum zio_flag flags)
680 {
681         zio_t *zio;
682
683         dprintf_bp(bp, "freeing in txg %llu, pass %u",
684             (longlong_t)txg, spa->spa_sync_pass);
685
686         ASSERT(!BP_IS_HOLE(bp));
687         ASSERT(spa_syncing_txg(spa) == txg);
688         ASSERT(spa_sync_pass(spa) <= SYNC_PASS_DEFERRED_FREE);
689
690         zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp),
691             NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_FREE, flags,
692             NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_FREE_PIPELINE);
693
694         return (zio);
695 }
696
697 zio_t *
698 zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
699     zio_done_func_t *done, void *private, enum zio_flag flags)
700 {
701         zio_t *zio;
702
703         /*
704          * A claim is an allocation of a specific block.  Claims are needed
705          * to support immediate writes in the intent log.  The issue is that
706          * immediate writes contain committed data, but in a txg that was
707          * *not* committed.  Upon opening the pool after an unclean shutdown,
708          * the intent log claims all blocks that contain immediate write data
709          * so that the SPA knows they're in use.
710          *
711          * All claims *must* be resolved in the first txg -- before the SPA
712          * starts allocating blocks -- so that nothing is allocated twice.
713          * If txg == 0 we just verify that the block is claimable.
714          */
715         ASSERT3U(spa->spa_uberblock.ub_rootbp.blk_birth, <, spa_first_txg(spa));
716         ASSERT(txg == spa_first_txg(spa) || txg == 0);
717         ASSERT(!BP_GET_DEDUP(bp) || !spa_writeable(spa));       /* zdb(1M) */
718
719         zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp),
720             done, private, ZIO_TYPE_CLAIM, ZIO_PRIORITY_NOW, flags,
721             NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_CLAIM_PIPELINE);
722
723         return (zio);
724 }
725
726 zio_t *
727 zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
728     zio_done_func_t *done, void *private, int priority, enum zio_flag flags)
729 {
730         zio_t *zio;
731         int c;
732
733         if (vd->vdev_children == 0) {
734                 zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private,
735                     ZIO_TYPE_IOCTL, priority, flags, vd, 0, NULL,
736                     ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE);
737
738                 zio->io_cmd = cmd;
739         } else {
740                 zio = zio_null(pio, spa, NULL, NULL, NULL, flags);
741
742                 for (c = 0; c < vd->vdev_children; c++)
743                         zio_nowait(zio_ioctl(zio, spa, vd->vdev_child[c], cmd,
744                             done, private, priority, flags));
745         }
746
747         return (zio);
748 }
749
750 zio_t *
751 zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
752     void *data, int checksum, zio_done_func_t *done, void *private,
753     int priority, enum zio_flag flags, boolean_t labels)
754 {
755         zio_t *zio;
756
757         ASSERT(vd->vdev_children == 0);
758         ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE ||
759             offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE);
760         ASSERT3U(offset + size, <=, vd->vdev_psize);
761
762         zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private,
763             ZIO_TYPE_READ, priority, flags, vd, offset, NULL,
764             ZIO_STAGE_OPEN, ZIO_READ_PHYS_PIPELINE);
765
766         zio->io_prop.zp_checksum = checksum;
767
768         return (zio);
769 }
770
771 zio_t *
772 zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
773     void *data, int checksum, zio_done_func_t *done, void *private,
774     int priority, enum zio_flag flags, boolean_t labels)
775 {
776         zio_t *zio;
777
778         ASSERT(vd->vdev_children == 0);
779         ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE ||
780             offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE);
781         ASSERT3U(offset + size, <=, vd->vdev_psize);
782
783         zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private,
784             ZIO_TYPE_WRITE, priority, flags, vd, offset, NULL,
785             ZIO_STAGE_OPEN, ZIO_WRITE_PHYS_PIPELINE);
786
787         zio->io_prop.zp_checksum = checksum;
788
789         if (zio_checksum_table[checksum].ci_eck) {
790                 /*
791                  * zec checksums are necessarily destructive -- they modify
792                  * the end of the write buffer to hold the verifier/checksum.
793                  * Therefore, we must make a local copy in case the data is
794                  * being written to multiple places in parallel.
795                  */
796                 void *wbuf = zio_buf_alloc(size);
797                 bcopy(data, wbuf, size);
798                 zio_push_transform(zio, wbuf, size, size, NULL);
799         }
800
801         return (zio);
802 }
803
804 /*
805  * Create a child I/O to do some work for us.
806  */
807 zio_t *
808 zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset,
809         void *data, uint64_t size, int type, int priority, enum zio_flag flags,
810         zio_done_func_t *done, void *private)
811 {
812         enum zio_stage pipeline = ZIO_VDEV_CHILD_PIPELINE;
813         zio_t *zio;
814
815         ASSERT(vd->vdev_parent ==
816             (pio->io_vd ? pio->io_vd : pio->io_spa->spa_root_vdev));
817
818         if (type == ZIO_TYPE_READ && bp != NULL) {
819                 /*
820                  * If we have the bp, then the child should perform the
821                  * checksum and the parent need not.  This pushes error
822                  * detection as close to the leaves as possible and
823                  * eliminates redundant checksums in the interior nodes.
824                  */
825                 pipeline |= ZIO_STAGE_CHECKSUM_VERIFY;
826                 pio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY;
827         }
828
829         if (vd->vdev_children == 0)
830                 offset += VDEV_LABEL_START_SIZE;
831
832         flags |= ZIO_VDEV_CHILD_FLAGS(pio) | ZIO_FLAG_DONT_PROPAGATE;
833
834         /*
835          * If we've decided to do a repair, the write is not speculative --
836          * even if the original read was.
837          */
838         if (flags & ZIO_FLAG_IO_REPAIR)
839                 flags &= ~ZIO_FLAG_SPECULATIVE;
840
841         zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size,
842             done, private, type, priority, flags, vd, offset, &pio->io_bookmark,
843             ZIO_STAGE_VDEV_IO_START >> 1, pipeline);
844
845         return (zio);
846 }
847
848 zio_t *
849 zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, void *data, uint64_t size,
850         int type, int priority, enum zio_flag flags,
851         zio_done_func_t *done, void *private)
852 {
853         zio_t *zio;
854
855         ASSERT(vd->vdev_ops->vdev_op_leaf);
856
857         zio = zio_create(NULL, vd->vdev_spa, 0, NULL,
858             data, size, done, private, type, priority,
859             flags | ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_RETRY,
860             vd, offset, NULL,
861             ZIO_STAGE_VDEV_IO_START >> 1, ZIO_VDEV_CHILD_PIPELINE);
862
863         return (zio);
864 }
865
866 void
867 zio_flush(zio_t *zio, vdev_t *vd)
868 {
869         zio_nowait(zio_ioctl(zio, zio->io_spa, vd, DKIOCFLUSHWRITECACHE,
870             NULL, NULL, ZIO_PRIORITY_NOW,
871             ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_DONT_RETRY));
872 }
873
874 void
875 zio_shrink(zio_t *zio, uint64_t size)
876 {
877         ASSERT(zio->io_executor == NULL);
878         ASSERT(zio->io_orig_size == zio->io_size);
879         ASSERT(size <= zio->io_size);
880
881         /*
882          * We don't shrink for raidz because of problems with the
883          * reconstruction when reading back less than the block size.
884          * Note, BP_IS_RAIDZ() assumes no compression.
885          */
886         ASSERT(BP_GET_COMPRESS(zio->io_bp) == ZIO_COMPRESS_OFF);
887         if (!BP_IS_RAIDZ(zio->io_bp))
888                 zio->io_orig_size = zio->io_size = size;
889 }
890
891 /*
892  * ==========================================================================
893  * Prepare to read and write logical blocks
894  * ==========================================================================
895  */
896
897 static int
898 zio_read_bp_init(zio_t *zio)
899 {
900         blkptr_t *bp = zio->io_bp;
901
902         if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF &&
903             zio->io_child_type == ZIO_CHILD_LOGICAL &&
904             !(zio->io_flags & ZIO_FLAG_RAW)) {
905                 uint64_t psize = BP_GET_PSIZE(bp);
906                 void *cbuf = zio_buf_alloc(psize);
907
908                 zio_push_transform(zio, cbuf, psize, psize, zio_decompress);
909         }
910
911         if (!dmu_ot[BP_GET_TYPE(bp)].ot_metadata && BP_GET_LEVEL(bp) == 0)
912                 zio->io_flags |= ZIO_FLAG_DONT_CACHE;
913
914         if (BP_GET_TYPE(bp) == DMU_OT_DDT_ZAP)
915                 zio->io_flags |= ZIO_FLAG_DONT_CACHE;
916
917         if (BP_GET_DEDUP(bp) && zio->io_child_type == ZIO_CHILD_LOGICAL)
918                 zio->io_pipeline = ZIO_DDT_READ_PIPELINE;
919
920         return (ZIO_PIPELINE_CONTINUE);
921 }
922
923 static int
924 zio_write_bp_init(zio_t *zio)
925 {
926         spa_t *spa = zio->io_spa;
927         zio_prop_t *zp = &zio->io_prop;
928         enum zio_compress compress = zp->zp_compress;
929         blkptr_t *bp = zio->io_bp;
930         uint64_t lsize = zio->io_size;
931         uint64_t psize = lsize;
932         int pass = 1;
933
934         /*
935          * If our children haven't all reached the ready stage,
936          * wait for them and then repeat this pipeline stage.
937          */
938         if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_READY) ||
939             zio_wait_for_children(zio, ZIO_CHILD_LOGICAL, ZIO_WAIT_READY))
940                 return (ZIO_PIPELINE_STOP);
941
942         if (!IO_IS_ALLOCATING(zio))
943                 return (ZIO_PIPELINE_CONTINUE);
944
945         ASSERT(zio->io_child_type != ZIO_CHILD_DDT);
946
947         if (zio->io_bp_override) {
948                 ASSERT(bp->blk_birth != zio->io_txg);
949                 ASSERT(BP_GET_DEDUP(zio->io_bp_override) == 0);
950
951                 *bp = *zio->io_bp_override;
952                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
953
954                 if (BP_IS_HOLE(bp) || !zp->zp_dedup)
955                         return (ZIO_PIPELINE_CONTINUE);
956
957                 ASSERT(zio_checksum_table[zp->zp_checksum].ci_dedup ||
958                     zp->zp_dedup_verify);
959
960                 if (BP_GET_CHECKSUM(bp) == zp->zp_checksum) {
961                         BP_SET_DEDUP(bp, 1);
962                         zio->io_pipeline |= ZIO_STAGE_DDT_WRITE;
963                         return (ZIO_PIPELINE_CONTINUE);
964                 }
965                 zio->io_bp_override = NULL;
966                 BP_ZERO(bp);
967         }
968
969         if (bp->blk_birth == zio->io_txg) {
970                 /*
971                  * We're rewriting an existing block, which means we're
972                  * working on behalf of spa_sync().  For spa_sync() to
973                  * converge, it must eventually be the case that we don't
974                  * have to allocate new blocks.  But compression changes
975                  * the blocksize, which forces a reallocate, and makes
976                  * convergence take longer.  Therefore, after the first
977                  * few passes, stop compressing to ensure convergence.
978                  */
979                 pass = spa_sync_pass(spa);
980
981                 ASSERT(zio->io_txg == spa_syncing_txg(spa));
982                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
983                 ASSERT(!BP_GET_DEDUP(bp));
984
985                 if (pass > SYNC_PASS_DONT_COMPRESS)
986                         compress = ZIO_COMPRESS_OFF;
987
988                 /* Make sure someone doesn't change their mind on overwrites */
989                 ASSERT(MIN(zp->zp_copies + BP_IS_GANG(bp),
990                     spa_max_replication(spa)) == BP_GET_NDVAS(bp));
991         }
992
993         if (compress != ZIO_COMPRESS_OFF) {
994                 void *cbuf = zio_buf_alloc(lsize);
995                 psize = zio_compress_data(compress, zio->io_data, cbuf, lsize);
996                 if (psize == 0 || psize == lsize) {
997                         compress = ZIO_COMPRESS_OFF;
998                         zio_buf_free(cbuf, lsize);
999                 } else {
1000                         ASSERT(psize < lsize);
1001                         zio_push_transform(zio, cbuf, psize, lsize, NULL);
1002                 }
1003         }
1004
1005         /*
1006          * The final pass of spa_sync() must be all rewrites, but the first
1007          * few passes offer a trade-off: allocating blocks defers convergence,
1008          * but newly allocated blocks are sequential, so they can be written
1009          * to disk faster.  Therefore, we allow the first few passes of
1010          * spa_sync() to allocate new blocks, but force rewrites after that.
1011          * There should only be a handful of blocks after pass 1 in any case.
1012          */
1013         if (bp->blk_birth == zio->io_txg && BP_GET_PSIZE(bp) == psize &&
1014             pass > SYNC_PASS_REWRITE) {
1015                 ASSERT(psize != 0);
1016                 enum zio_stage gang_stages = zio->io_pipeline & ZIO_GANG_STAGES;
1017                 zio->io_pipeline = ZIO_REWRITE_PIPELINE | gang_stages;
1018                 zio->io_flags |= ZIO_FLAG_IO_REWRITE;
1019         } else {
1020                 BP_ZERO(bp);
1021                 zio->io_pipeline = ZIO_WRITE_PIPELINE;
1022         }
1023
1024         if (psize == 0) {
1025                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1026         } else {
1027                 ASSERT(zp->zp_checksum != ZIO_CHECKSUM_GANG_HEADER);
1028                 BP_SET_LSIZE(bp, lsize);
1029                 BP_SET_PSIZE(bp, psize);
1030                 BP_SET_COMPRESS(bp, compress);
1031                 BP_SET_CHECKSUM(bp, zp->zp_checksum);
1032                 BP_SET_TYPE(bp, zp->zp_type);
1033                 BP_SET_LEVEL(bp, zp->zp_level);
1034                 BP_SET_DEDUP(bp, zp->zp_dedup);
1035                 BP_SET_BYTEORDER(bp, ZFS_HOST_BYTEORDER);
1036                 if (zp->zp_dedup) {
1037                         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1038                         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE));
1039                         zio->io_pipeline = ZIO_DDT_WRITE_PIPELINE;
1040                 }
1041         }
1042
1043         return (ZIO_PIPELINE_CONTINUE);
1044 }
1045
1046 static int
1047 zio_free_bp_init(zio_t *zio)
1048 {
1049         blkptr_t *bp = zio->io_bp;
1050
1051         if (zio->io_child_type == ZIO_CHILD_LOGICAL) {
1052                 if (BP_GET_DEDUP(bp))
1053                         zio->io_pipeline = ZIO_DDT_FREE_PIPELINE;
1054         }
1055
1056         return (ZIO_PIPELINE_CONTINUE);
1057 }
1058
1059 /*
1060  * ==========================================================================
1061  * Execute the I/O pipeline
1062  * ==========================================================================
1063  */
1064
1065 static void
1066 zio_taskq_dispatch(zio_t *zio, enum zio_taskq_type q, boolean_t cutinline)
1067 {
1068         spa_t *spa = zio->io_spa;
1069         zio_type_t t = zio->io_type;
1070         int flags = TQ_SLEEP | (cutinline ? TQ_FRONT : 0);
1071
1072         ASSERT(q == ZIO_TASKQ_ISSUE || q == ZIO_TASKQ_INTERRUPT);
1073
1074         /*
1075          * If we're a config writer or a probe, the normal issue and
1076          * interrupt threads may all be blocked waiting for the config lock.
1077          * In this case, select the otherwise-unused taskq for ZIO_TYPE_NULL.
1078          */
1079         if (zio->io_flags & (ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_PROBE))
1080                 t = ZIO_TYPE_NULL;
1081
1082         /*
1083          * A similar issue exists for the L2ARC write thread until L2ARC 2.0.
1084          */
1085         if (t == ZIO_TYPE_WRITE && zio->io_vd && zio->io_vd->vdev_aux)
1086                 t = ZIO_TYPE_NULL;
1087
1088         /*
1089          * If this is a high priority I/O, then use the high priority taskq.
1090          */
1091         if (zio->io_priority == ZIO_PRIORITY_NOW &&
1092             spa->spa_zio_taskq[t][q + 1] != NULL)
1093                 q++;
1094
1095         ASSERT3U(q, <, ZIO_TASKQ_TYPES);
1096 #ifdef _KERNEL
1097         (void) taskq_dispatch_safe(spa->spa_zio_taskq[t][q],
1098             (task_func_t *)zio_execute, zio, flags, &zio->io_task);
1099 #else
1100         (void) taskq_dispatch(spa->spa_zio_taskq[t][q],
1101             (task_func_t *)zio_execute, zio, flags);
1102 #endif
1103 }
1104
1105 static boolean_t
1106 zio_taskq_member(zio_t *zio, enum zio_taskq_type q)
1107 {
1108         kthread_t *executor = zio->io_executor;
1109         spa_t *spa = zio->io_spa;
1110
1111         for (zio_type_t t = 0; t < ZIO_TYPES; t++)
1112                 if (taskq_member(spa->spa_zio_taskq[t][q], executor))
1113                         return (B_TRUE);
1114
1115         return (B_FALSE);
1116 }
1117
1118 static int
1119 zio_issue_async(zio_t *zio)
1120 {
1121         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE);
1122
1123         return (ZIO_PIPELINE_STOP);
1124 }
1125
1126 void
1127 zio_interrupt(zio_t *zio)
1128 {
1129         zio_taskq_dispatch(zio, ZIO_TASKQ_INTERRUPT, B_FALSE);
1130 }
1131
1132 /*
1133  * Execute the I/O pipeline until one of the following occurs:
1134  * (1) the I/O completes; (2) the pipeline stalls waiting for
1135  * dependent child I/Os; (3) the I/O issues, so we're waiting
1136  * for an I/O completion interrupt; (4) the I/O is delegated by
1137  * vdev-level caching or aggregation; (5) the I/O is deferred
1138  * due to vdev-level queueing; (6) the I/O is handed off to
1139  * another thread.  In all cases, the pipeline stops whenever
1140  * there's no CPU work; it never burns a thread in cv_wait().
1141  *
1142  * There's no locking on io_stage because there's no legitimate way
1143  * for multiple threads to be attempting to process the same I/O.
1144  */
1145 static zio_pipe_stage_t *zio_pipeline[];
1146
1147 void
1148 zio_execute(zio_t *zio)
1149 {
1150         zio->io_executor = curthread;
1151
1152         while (zio->io_stage < ZIO_STAGE_DONE) {
1153                 enum zio_stage pipeline = zio->io_pipeline;
1154                 enum zio_stage stage = zio->io_stage;
1155                 int rv;
1156
1157                 ASSERT(!MUTEX_HELD(&zio->io_lock));
1158                 ASSERT(ISP2(stage));
1159                 ASSERT(zio->io_stall == NULL);
1160
1161                 do {
1162                         stage <<= 1;
1163                 } while ((stage & pipeline) == 0);
1164
1165                 ASSERT(stage <= ZIO_STAGE_DONE);
1166
1167                 /*
1168                  * If we are in interrupt context and this pipeline stage
1169                  * will grab a config lock that is held across I/O,
1170                  * or may wait for an I/O that needs an interrupt thread
1171                  * to complete, issue async to avoid deadlock.
1172                  *
1173                  * For VDEV_IO_START, we cut in line so that the io will
1174                  * be sent to disk promptly.
1175                  */
1176                 if ((stage & ZIO_BLOCKING_STAGES) && zio->io_vd == NULL &&
1177                     zio_taskq_member(zio, ZIO_TASKQ_INTERRUPT)) {
1178                         boolean_t cut = (stage == ZIO_STAGE_VDEV_IO_START) ?
1179                             zio_requeue_io_start_cut_in_line : B_FALSE;
1180                         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, cut);
1181                         return;
1182                 }
1183
1184                 zio->io_stage = stage;
1185                 rv = zio_pipeline[highbit(stage) - 1](zio);
1186
1187                 if (rv == ZIO_PIPELINE_STOP)
1188                         return;
1189
1190                 ASSERT(rv == ZIO_PIPELINE_CONTINUE);
1191         }
1192 }
1193
1194 /*
1195  * ==========================================================================
1196  * Initiate I/O, either sync or async
1197  * ==========================================================================
1198  */
1199 int
1200 zio_wait(zio_t *zio)
1201 {
1202         int error;
1203
1204         ASSERT(zio->io_stage == ZIO_STAGE_OPEN);
1205         ASSERT(zio->io_executor == NULL);
1206
1207         zio->io_waiter = curthread;
1208
1209         zio_execute(zio);
1210
1211         mutex_enter(&zio->io_lock);
1212         while (zio->io_executor != NULL)
1213                 cv_wait(&zio->io_cv, &zio->io_lock);
1214         mutex_exit(&zio->io_lock);
1215
1216         error = zio->io_error;
1217         zio_destroy(zio);
1218
1219         return (error);
1220 }
1221
1222 void
1223 zio_nowait(zio_t *zio)
1224 {
1225         ASSERT(zio->io_executor == NULL);
1226
1227         if (zio->io_child_type == ZIO_CHILD_LOGICAL &&
1228             zio_unique_parent(zio) == NULL) {
1229                 /*
1230                  * This is a logical async I/O with no parent to wait for it.
1231                  * We add it to the spa_async_root_zio "Godfather" I/O which
1232                  * will ensure they complete prior to unloading the pool.
1233                  */
1234                 spa_t *spa = zio->io_spa;
1235
1236                 zio_add_child(spa->spa_async_zio_root, zio);
1237         }
1238
1239         zio_execute(zio);
1240 }
1241
1242 /*
1243  * ==========================================================================
1244  * Reexecute or suspend/resume failed I/O
1245  * ==========================================================================
1246  */
1247
1248 static void
1249 zio_reexecute(zio_t *pio)
1250 {
1251         zio_t *cio, *cio_next;
1252
1253         ASSERT(pio->io_child_type == ZIO_CHILD_LOGICAL);
1254         ASSERT(pio->io_orig_stage == ZIO_STAGE_OPEN);
1255         ASSERT(pio->io_gang_leader == NULL);
1256         ASSERT(pio->io_gang_tree == NULL);
1257
1258         pio->io_flags = pio->io_orig_flags;
1259         pio->io_stage = pio->io_orig_stage;
1260         pio->io_pipeline = pio->io_orig_pipeline;
1261         pio->io_reexecute = 0;
1262         pio->io_error = 0;
1263         for (int w = 0; w < ZIO_WAIT_TYPES; w++)
1264                 pio->io_state[w] = 0;
1265         for (int c = 0; c < ZIO_CHILD_TYPES; c++)
1266                 pio->io_child_error[c] = 0;
1267
1268         if (IO_IS_ALLOCATING(pio))
1269                 BP_ZERO(pio->io_bp);
1270
1271         /*
1272          * As we reexecute pio's children, new children could be created.
1273          * New children go to the head of pio's io_child_list, however,
1274          * so we will (correctly) not reexecute them.  The key is that
1275          * the remainder of pio's io_child_list, from 'cio_next' onward,
1276          * cannot be affected by any side effects of reexecuting 'cio'.
1277          */
1278         for (cio = zio_walk_children(pio); cio != NULL; cio = cio_next) {
1279                 cio_next = zio_walk_children(pio);
1280                 mutex_enter(&pio->io_lock);
1281                 for (int w = 0; w < ZIO_WAIT_TYPES; w++)
1282                         pio->io_children[cio->io_child_type][w]++;
1283                 mutex_exit(&pio->io_lock);
1284                 zio_reexecute(cio);
1285         }
1286
1287         /*
1288          * Now that all children have been reexecuted, execute the parent.
1289          * We don't reexecute "The Godfather" I/O here as it's the
1290          * responsibility of the caller to wait on him.
1291          */
1292         if (!(pio->io_flags & ZIO_FLAG_GODFATHER))
1293                 zio_execute(pio);
1294 }
1295
1296 void
1297 zio_suspend(spa_t *spa, zio_t *zio)
1298 {
1299         if (spa_get_failmode(spa) == ZIO_FAILURE_MODE_PANIC)
1300                 fm_panic("Pool '%s' has encountered an uncorrectable I/O "
1301                     "failure and the failure mode property for this pool "
1302                     "is set to panic.", spa_name(spa));
1303
1304         zfs_ereport_post(FM_EREPORT_ZFS_IO_FAILURE, spa, NULL, NULL, 0, 0);
1305
1306         mutex_enter(&spa->spa_suspend_lock);
1307
1308         if (spa->spa_suspend_zio_root == NULL)
1309                 spa->spa_suspend_zio_root = zio_root(spa, NULL, NULL,
1310                     ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE |
1311                     ZIO_FLAG_GODFATHER);
1312
1313         spa->spa_suspended = B_TRUE;
1314
1315         if (zio != NULL) {
1316                 ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER));
1317                 ASSERT(zio != spa->spa_suspend_zio_root);
1318                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1319                 ASSERT(zio_unique_parent(zio) == NULL);
1320                 ASSERT(zio->io_stage == ZIO_STAGE_DONE);
1321                 zio_add_child(spa->spa_suspend_zio_root, zio);
1322         }
1323
1324         mutex_exit(&spa->spa_suspend_lock);
1325 }
1326
1327 int
1328 zio_resume(spa_t *spa)
1329 {
1330         zio_t *pio;
1331
1332         /*
1333          * Reexecute all previously suspended i/o.
1334          */
1335         mutex_enter(&spa->spa_suspend_lock);
1336         spa->spa_suspended = B_FALSE;
1337         cv_broadcast(&spa->spa_suspend_cv);
1338         pio = spa->spa_suspend_zio_root;
1339         spa->spa_suspend_zio_root = NULL;
1340         mutex_exit(&spa->spa_suspend_lock);
1341
1342         if (pio == NULL)
1343                 return (0);
1344
1345         zio_reexecute(pio);
1346         return (zio_wait(pio));
1347 }
1348
1349 void
1350 zio_resume_wait(spa_t *spa)
1351 {
1352         mutex_enter(&spa->spa_suspend_lock);
1353         while (spa_suspended(spa))
1354                 cv_wait(&spa->spa_suspend_cv, &spa->spa_suspend_lock);
1355         mutex_exit(&spa->spa_suspend_lock);
1356 }
1357
1358 /*
1359  * ==========================================================================
1360  * Gang blocks.
1361  *
1362  * A gang block is a collection of small blocks that looks to the DMU
1363  * like one large block.  When zio_dva_allocate() cannot find a block
1364  * of the requested size, due to either severe fragmentation or the pool
1365  * being nearly full, it calls zio_write_gang_block() to construct the
1366  * block from smaller fragments.
1367  *
1368  * A gang block consists of a gang header (zio_gbh_phys_t) and up to
1369  * three (SPA_GBH_NBLKPTRS) gang members.  The gang header is just like
1370  * an indirect block: it's an array of block pointers.  It consumes
1371  * only one sector and hence is allocatable regardless of fragmentation.
1372  * The gang header's bps point to its gang members, which hold the data.
1373  *
1374  * Gang blocks are self-checksumming, using the bp's <vdev, offset, txg>
1375  * as the verifier to ensure uniqueness of the SHA256 checksum.
1376  * Critically, the gang block bp's blk_cksum is the checksum of the data,
1377  * not the gang header.  This ensures that data block signatures (needed for
1378  * deduplication) are independent of how the block is physically stored.
1379  *
1380  * Gang blocks can be nested: a gang member may itself be a gang block.
1381  * Thus every gang block is a tree in which root and all interior nodes are
1382  * gang headers, and the leaves are normal blocks that contain user data.
1383  * The root of the gang tree is called the gang leader.
1384  *
1385  * To perform any operation (read, rewrite, free, claim) on a gang block,
1386  * zio_gang_assemble() first assembles the gang tree (minus data leaves)
1387  * in the io_gang_tree field of the original logical i/o by recursively
1388  * reading the gang leader and all gang headers below it.  This yields
1389  * an in-core tree containing the contents of every gang header and the
1390  * bps for every constituent of the gang block.
1391  *
1392  * With the gang tree now assembled, zio_gang_issue() just walks the gang tree
1393  * and invokes a callback on each bp.  To free a gang block, zio_gang_issue()
1394  * calls zio_free_gang() -- a trivial wrapper around zio_free() -- for each bp.
1395  * zio_claim_gang() provides a similarly trivial wrapper for zio_claim().
1396  * zio_read_gang() is a wrapper around zio_read() that omits reading gang
1397  * headers, since we already have those in io_gang_tree.  zio_rewrite_gang()
1398  * performs a zio_rewrite() of the data or, for gang headers, a zio_rewrite()
1399  * of the gang header plus zio_checksum_compute() of the data to update the
1400  * gang header's blk_cksum as described above.
1401  *
1402  * The two-phase assemble/issue model solves the problem of partial failure --
1403  * what if you'd freed part of a gang block but then couldn't read the
1404  * gang header for another part?  Assembling the entire gang tree first
1405  * ensures that all the necessary gang header I/O has succeeded before
1406  * starting the actual work of free, claim, or write.  Once the gang tree
1407  * is assembled, free and claim are in-memory operations that cannot fail.
1408  *
1409  * In the event that a gang write fails, zio_dva_unallocate() walks the
1410  * gang tree to immediately free (i.e. insert back into the space map)
1411  * everything we've allocated.  This ensures that we don't get ENOSPC
1412  * errors during repeated suspend/resume cycles due to a flaky device.
1413  *
1414  * Gang rewrites only happen during sync-to-convergence.  If we can't assemble
1415  * the gang tree, we won't modify the block, so we can safely defer the free
1416  * (knowing that the block is still intact).  If we *can* assemble the gang
1417  * tree, then even if some of the rewrites fail, zio_dva_unallocate() will free
1418  * each constituent bp and we can allocate a new block on the next sync pass.
1419  *
1420  * In all cases, the gang tree allows complete recovery from partial failure.
1421  * ==========================================================================
1422  */
1423
1424 static zio_t *
1425 zio_read_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data)
1426 {
1427         if (gn != NULL)
1428                 return (pio);
1429
1430         return (zio_read(pio, pio->io_spa, bp, data, BP_GET_PSIZE(bp),
1431             NULL, NULL, pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio),
1432             &pio->io_bookmark));
1433 }
1434
1435 zio_t *
1436 zio_rewrite_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data)
1437 {
1438         zio_t *zio;
1439
1440         if (gn != NULL) {
1441                 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp,
1442                     gn->gn_gbh, SPA_GANGBLOCKSIZE, NULL, NULL, pio->io_priority,
1443                     ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
1444                 /*
1445                  * As we rewrite each gang header, the pipeline will compute
1446                  * a new gang block header checksum for it; but no one will
1447                  * compute a new data checksum, so we do that here.  The one
1448                  * exception is the gang leader: the pipeline already computed
1449                  * its data checksum because that stage precedes gang assembly.
1450                  * (Presently, nothing actually uses interior data checksums;
1451                  * this is just good hygiene.)
1452                  */
1453                 if (gn != pio->io_gang_leader->io_gang_tree) {
1454                         zio_checksum_compute(zio, BP_GET_CHECKSUM(bp),
1455                             data, BP_GET_PSIZE(bp));
1456                 }
1457                 /*
1458                  * If we are here to damage data for testing purposes,
1459                  * leave the GBH alone so that we can detect the damage.
1460                  */
1461                 if (pio->io_gang_leader->io_flags & ZIO_FLAG_INDUCE_DAMAGE)
1462                         zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES;
1463         } else {
1464                 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp,
1465                     data, BP_GET_PSIZE(bp), NULL, NULL, pio->io_priority,
1466                     ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
1467         }
1468
1469         return (zio);
1470 }
1471
1472 /* ARGSUSED */
1473 zio_t *
1474 zio_free_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data)
1475 {
1476         return (zio_free_sync(pio, pio->io_spa, pio->io_txg, bp,
1477             ZIO_GANG_CHILD_FLAGS(pio)));
1478 }
1479
1480 /* ARGSUSED */
1481 zio_t *
1482 zio_claim_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data)
1483 {
1484         return (zio_claim(pio, pio->io_spa, pio->io_txg, bp,
1485             NULL, NULL, ZIO_GANG_CHILD_FLAGS(pio)));
1486 }
1487
1488 static zio_gang_issue_func_t *zio_gang_issue_func[ZIO_TYPES] = {
1489         NULL,
1490         zio_read_gang,
1491         zio_rewrite_gang,
1492         zio_free_gang,
1493         zio_claim_gang,
1494         NULL
1495 };
1496
1497 static void zio_gang_tree_assemble_done(zio_t *zio);
1498
1499 static zio_gang_node_t *
1500 zio_gang_node_alloc(zio_gang_node_t **gnpp)
1501 {
1502         zio_gang_node_t *gn;
1503
1504         ASSERT(*gnpp == NULL);
1505
1506         gn = kmem_zalloc(sizeof (*gn), KM_SLEEP);
1507         gn->gn_gbh = zio_buf_alloc(SPA_GANGBLOCKSIZE);
1508         *gnpp = gn;
1509
1510         return (gn);
1511 }
1512
1513 static void
1514 zio_gang_node_free(zio_gang_node_t **gnpp)
1515 {
1516         zio_gang_node_t *gn = *gnpp;
1517
1518         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++)
1519                 ASSERT(gn->gn_child[g] == NULL);
1520
1521         zio_buf_free(gn->gn_gbh, SPA_GANGBLOCKSIZE);
1522         kmem_free(gn, sizeof (*gn));
1523         *gnpp = NULL;
1524 }
1525
1526 static void
1527 zio_gang_tree_free(zio_gang_node_t **gnpp)
1528 {
1529         zio_gang_node_t *gn = *gnpp;
1530
1531         if (gn == NULL)
1532                 return;
1533
1534         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++)
1535                 zio_gang_tree_free(&gn->gn_child[g]);
1536
1537         zio_gang_node_free(gnpp);
1538 }
1539
1540 static void
1541 zio_gang_tree_assemble(zio_t *gio, blkptr_t *bp, zio_gang_node_t **gnpp)
1542 {
1543         zio_gang_node_t *gn = zio_gang_node_alloc(gnpp);
1544
1545         ASSERT(gio->io_gang_leader == gio);
1546         ASSERT(BP_IS_GANG(bp));
1547
1548         zio_nowait(zio_read(gio, gio->io_spa, bp, gn->gn_gbh,
1549             SPA_GANGBLOCKSIZE, zio_gang_tree_assemble_done, gn,
1550             gio->io_priority, ZIO_GANG_CHILD_FLAGS(gio), &gio->io_bookmark));
1551 }
1552
1553 static void
1554 zio_gang_tree_assemble_done(zio_t *zio)
1555 {
1556         zio_t *gio = zio->io_gang_leader;
1557         zio_gang_node_t *gn = zio->io_private;
1558         blkptr_t *bp = zio->io_bp;
1559
1560         ASSERT(gio == zio_unique_parent(zio));
1561         ASSERT(zio->io_child_count == 0);
1562
1563         if (zio->io_error)
1564                 return;
1565
1566         if (BP_SHOULD_BYTESWAP(bp))
1567                 byteswap_uint64_array(zio->io_data, zio->io_size);
1568
1569         ASSERT(zio->io_data == gn->gn_gbh);
1570         ASSERT(zio->io_size == SPA_GANGBLOCKSIZE);
1571         ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC);
1572
1573         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
1574                 blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g];
1575                 if (!BP_IS_GANG(gbp))
1576                         continue;
1577                 zio_gang_tree_assemble(gio, gbp, &gn->gn_child[g]);
1578         }
1579 }
1580
1581 static void
1582 zio_gang_tree_issue(zio_t *pio, zio_gang_node_t *gn, blkptr_t *bp, void *data)
1583 {
1584         zio_t *gio = pio->io_gang_leader;
1585         zio_t *zio;
1586
1587         ASSERT(BP_IS_GANG(bp) == !!gn);
1588         ASSERT(BP_GET_CHECKSUM(bp) == BP_GET_CHECKSUM(gio->io_bp));
1589         ASSERT(BP_GET_LSIZE(bp) == BP_GET_PSIZE(bp) || gn == gio->io_gang_tree);
1590
1591         /*
1592          * If you're a gang header, your data is in gn->gn_gbh.
1593          * If you're a gang member, your data is in 'data' and gn == NULL.
1594          */
1595         zio = zio_gang_issue_func[gio->io_type](pio, bp, gn, data);
1596
1597         if (gn != NULL) {
1598                 ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC);
1599
1600                 for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
1601                         blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g];
1602                         if (BP_IS_HOLE(gbp))
1603                                 continue;
1604                         zio_gang_tree_issue(zio, gn->gn_child[g], gbp, data);
1605                         data = (char *)data + BP_GET_PSIZE(gbp);
1606                 }
1607         }
1608
1609         if (gn == gio->io_gang_tree)
1610                 ASSERT3P((char *)gio->io_data + gio->io_size, ==, data);
1611
1612         if (zio != pio)
1613                 zio_nowait(zio);
1614 }
1615
1616 static int
1617 zio_gang_assemble(zio_t *zio)
1618 {
1619         blkptr_t *bp = zio->io_bp;
1620
1621         ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == NULL);
1622         ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
1623
1624         zio->io_gang_leader = zio;
1625
1626         zio_gang_tree_assemble(zio, bp, &zio->io_gang_tree);
1627
1628         return (ZIO_PIPELINE_CONTINUE);
1629 }
1630
1631 static int
1632 zio_gang_issue(zio_t *zio)
1633 {
1634         blkptr_t *bp = zio->io_bp;
1635
1636         if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_DONE))
1637                 return (ZIO_PIPELINE_STOP);
1638
1639         ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == zio);
1640         ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
1641
1642         if (zio->io_child_error[ZIO_CHILD_GANG] == 0)
1643                 zio_gang_tree_issue(zio, zio->io_gang_tree, bp, zio->io_data);
1644         else
1645                 zio_gang_tree_free(&zio->io_gang_tree);
1646
1647         zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1648
1649         return (ZIO_PIPELINE_CONTINUE);
1650 }
1651
1652 static void
1653 zio_write_gang_member_ready(zio_t *zio)
1654 {
1655         zio_t *pio = zio_unique_parent(zio);
1656         zio_t *gio = zio->io_gang_leader;
1657         dva_t *cdva = zio->io_bp->blk_dva;
1658         dva_t *pdva = pio->io_bp->blk_dva;
1659         uint64_t asize;
1660
1661         if (BP_IS_HOLE(zio->io_bp))
1662                 return;
1663
1664         ASSERT(BP_IS_HOLE(&zio->io_bp_orig));
1665
1666         ASSERT(zio->io_child_type == ZIO_CHILD_GANG);
1667         ASSERT3U(zio->io_prop.zp_copies, ==, gio->io_prop.zp_copies);
1668         ASSERT3U(zio->io_prop.zp_copies, <=, BP_GET_NDVAS(zio->io_bp));
1669         ASSERT3U(pio->io_prop.zp_copies, <=, BP_GET_NDVAS(pio->io_bp));
1670         ASSERT3U(BP_GET_NDVAS(zio->io_bp), <=, BP_GET_NDVAS(pio->io_bp));
1671
1672         mutex_enter(&pio->io_lock);
1673         for (int d = 0; d < BP_GET_NDVAS(zio->io_bp); d++) {
1674                 ASSERT(DVA_GET_GANG(&pdva[d]));
1675                 asize = DVA_GET_ASIZE(&pdva[d]);
1676                 asize += DVA_GET_ASIZE(&cdva[d]);
1677                 DVA_SET_ASIZE(&pdva[d], asize);
1678         }
1679         mutex_exit(&pio->io_lock);
1680 }
1681
1682 static int
1683 zio_write_gang_block(zio_t *pio)
1684 {
1685         spa_t *spa = pio->io_spa;
1686         blkptr_t *bp = pio->io_bp;
1687         zio_t *gio = pio->io_gang_leader;
1688         zio_t *zio;
1689         zio_gang_node_t *gn, **gnpp;
1690         zio_gbh_phys_t *gbh;
1691         uint64_t txg = pio->io_txg;
1692         uint64_t resid = pio->io_size;
1693         uint64_t lsize;
1694         int copies = gio->io_prop.zp_copies;
1695         int gbh_copies = MIN(copies + 1, spa_max_replication(spa));
1696         zio_prop_t zp;
1697         int error;
1698
1699         error = metaslab_alloc(spa, spa_normal_class(spa), SPA_GANGBLOCKSIZE,
1700             bp, gbh_copies, txg, pio == gio ? NULL : gio->io_bp,
1701             METASLAB_HINTBP_FAVOR | METASLAB_GANG_HEADER);
1702         if (error) {
1703                 pio->io_error = error;
1704                 return (ZIO_PIPELINE_CONTINUE);
1705         }
1706
1707         if (pio == gio) {
1708                 gnpp = &gio->io_gang_tree;
1709         } else {
1710                 gnpp = pio->io_private;
1711                 ASSERT(pio->io_ready == zio_write_gang_member_ready);
1712         }
1713
1714         gn = zio_gang_node_alloc(gnpp);
1715         gbh = gn->gn_gbh;
1716         bzero(gbh, SPA_GANGBLOCKSIZE);
1717
1718         /*
1719          * Create the gang header.
1720          */
1721         zio = zio_rewrite(pio, spa, txg, bp, gbh, SPA_GANGBLOCKSIZE, NULL, NULL,
1722             pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
1723
1724         /*
1725          * Create and nowait the gang children.
1726          */
1727         for (int g = 0; resid != 0; resid -= lsize, g++) {
1728                 lsize = P2ROUNDUP(resid / (SPA_GBH_NBLKPTRS - g),
1729                     SPA_MINBLOCKSIZE);
1730                 ASSERT(lsize >= SPA_MINBLOCKSIZE && lsize <= resid);
1731
1732                 zp.zp_checksum = gio->io_prop.zp_checksum;
1733                 zp.zp_compress = ZIO_COMPRESS_OFF;
1734                 zp.zp_type = DMU_OT_NONE;
1735                 zp.zp_level = 0;
1736                 zp.zp_copies = gio->io_prop.zp_copies;
1737                 zp.zp_dedup = 0;
1738                 zp.zp_dedup_verify = 0;
1739
1740                 zio_nowait(zio_write(zio, spa, txg, &gbh->zg_blkptr[g],
1741                     (char *)pio->io_data + (pio->io_size - resid), lsize, &zp,
1742                     zio_write_gang_member_ready, NULL, &gn->gn_child[g],
1743                     pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio),
1744                     &pio->io_bookmark));
1745         }
1746
1747         /*
1748          * Set pio's pipeline to just wait for zio to finish.
1749          */
1750         pio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1751
1752         zio_nowait(zio);
1753
1754         return (ZIO_PIPELINE_CONTINUE);
1755 }
1756
1757 /*
1758  * ==========================================================================
1759  * Dedup
1760  * ==========================================================================
1761  */
1762 static void
1763 zio_ddt_child_read_done(zio_t *zio)
1764 {
1765         blkptr_t *bp = zio->io_bp;
1766         ddt_entry_t *dde = zio->io_private;
1767         ddt_phys_t *ddp;
1768         zio_t *pio = zio_unique_parent(zio);
1769
1770         mutex_enter(&pio->io_lock);
1771         ddp = ddt_phys_select(dde, bp);
1772         if (zio->io_error == 0)
1773                 ddt_phys_clear(ddp);    /* this ddp doesn't need repair */
1774         if (zio->io_error == 0 && dde->dde_repair_data == NULL)
1775                 dde->dde_repair_data = zio->io_data;
1776         else
1777                 zio_buf_free(zio->io_data, zio->io_size);
1778         mutex_exit(&pio->io_lock);
1779 }
1780
1781 static int
1782 zio_ddt_read_start(zio_t *zio)
1783 {
1784         blkptr_t *bp = zio->io_bp;
1785
1786         ASSERT(BP_GET_DEDUP(bp));
1787         ASSERT(BP_GET_PSIZE(bp) == zio->io_size);
1788         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1789
1790         if (zio->io_child_error[ZIO_CHILD_DDT]) {
1791                 ddt_t *ddt = ddt_select(zio->io_spa, bp);
1792                 ddt_entry_t *dde = ddt_repair_start(ddt, bp);
1793                 ddt_phys_t *ddp = dde->dde_phys;
1794                 ddt_phys_t *ddp_self = ddt_phys_select(dde, bp);
1795                 blkptr_t blk;
1796
1797                 ASSERT(zio->io_vsd == NULL);
1798                 zio->io_vsd = dde;
1799
1800                 if (ddp_self == NULL)
1801                         return (ZIO_PIPELINE_CONTINUE);
1802
1803                 for (int p = 0; p < DDT_PHYS_TYPES; p++, ddp++) {
1804                         if (ddp->ddp_phys_birth == 0 || ddp == ddp_self)
1805                                 continue;
1806                         ddt_bp_create(ddt->ddt_checksum, &dde->dde_key, ddp,
1807                             &blk);
1808                         zio_nowait(zio_read(zio, zio->io_spa, &blk,
1809                             zio_buf_alloc(zio->io_size), zio->io_size,
1810                             zio_ddt_child_read_done, dde, zio->io_priority,
1811                             ZIO_DDT_CHILD_FLAGS(zio) | ZIO_FLAG_DONT_PROPAGATE,
1812                             &zio->io_bookmark));
1813                 }
1814                 return (ZIO_PIPELINE_CONTINUE);
1815         }
1816
1817         zio_nowait(zio_read(zio, zio->io_spa, bp,
1818             zio->io_data, zio->io_size, NULL, NULL, zio->io_priority,
1819             ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark));
1820
1821         return (ZIO_PIPELINE_CONTINUE);
1822 }
1823
1824 static int
1825 zio_ddt_read_done(zio_t *zio)
1826 {
1827         blkptr_t *bp = zio->io_bp;
1828
1829         if (zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_DONE))
1830                 return (ZIO_PIPELINE_STOP);
1831
1832         ASSERT(BP_GET_DEDUP(bp));
1833         ASSERT(BP_GET_PSIZE(bp) == zio->io_size);
1834         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1835
1836         if (zio->io_child_error[ZIO_CHILD_DDT]) {
1837                 ddt_t *ddt = ddt_select(zio->io_spa, bp);
1838                 ddt_entry_t *dde = zio->io_vsd;
1839                 if (ddt == NULL) {
1840                         ASSERT(spa_load_state(zio->io_spa) != SPA_LOAD_NONE);
1841                         return (ZIO_PIPELINE_CONTINUE);
1842                 }
1843                 if (dde == NULL) {
1844                         zio->io_stage = ZIO_STAGE_DDT_READ_START >> 1;
1845                         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE);
1846                         return (ZIO_PIPELINE_STOP);
1847                 }
1848                 if (dde->dde_repair_data != NULL) {
1849                         bcopy(dde->dde_repair_data, zio->io_data, zio->io_size);
1850                         zio->io_child_error[ZIO_CHILD_DDT] = 0;
1851                 }
1852                 ddt_repair_done(ddt, dde);
1853                 zio->io_vsd = NULL;
1854         }
1855
1856         ASSERT(zio->io_vsd == NULL);
1857
1858         return (ZIO_PIPELINE_CONTINUE);
1859 }
1860
1861 static boolean_t
1862 zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde)
1863 {
1864         spa_t *spa = zio->io_spa;
1865
1866         /*
1867          * Note: we compare the original data, not the transformed data,
1868          * because when zio->io_bp is an override bp, we will not have
1869          * pushed the I/O transforms.  That's an important optimization
1870          * because otherwise we'd compress/encrypt all dmu_sync() data twice.
1871          */
1872         for (int p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) {
1873                 zio_t *lio = dde->dde_lead_zio[p];
1874
1875                 if (lio != NULL) {
1876                         return (lio->io_orig_size != zio->io_orig_size ||
1877                             bcmp(zio->io_orig_data, lio->io_orig_data,
1878                             zio->io_orig_size) != 0);
1879                 }
1880         }
1881
1882         for (int p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) {
1883                 ddt_phys_t *ddp = &dde->dde_phys[p];
1884
1885                 if (ddp->ddp_phys_birth != 0) {
1886                         arc_buf_t *abuf = NULL;
1887                         uint32_t aflags = ARC_WAIT;
1888                         blkptr_t blk = *zio->io_bp;
1889                         int error;
1890
1891                         ddt_bp_fill(ddp, &blk, ddp->ddp_phys_birth);
1892
1893                         ddt_exit(ddt);
1894
1895                         error = arc_read_nolock(NULL, spa, &blk,
1896                             arc_getbuf_func, &abuf, ZIO_PRIORITY_SYNC_READ,
1897                             ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE,
1898                             &aflags, &zio->io_bookmark);
1899
1900                         if (error == 0) {
1901                                 if (arc_buf_size(abuf) != zio->io_orig_size ||
1902                                     bcmp(abuf->b_data, zio->io_orig_data,
1903                                     zio->io_orig_size) != 0)
1904                                         error = EEXIST;
1905                                 VERIFY(arc_buf_remove_ref(abuf, &abuf) == 1);
1906                         }
1907
1908                         ddt_enter(ddt);
1909                         return (error != 0);
1910                 }
1911         }
1912
1913         return (B_FALSE);
1914 }
1915
1916 static void
1917 zio_ddt_child_write_ready(zio_t *zio)
1918 {
1919         int p = zio->io_prop.zp_copies;
1920         ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp);
1921         ddt_entry_t *dde = zio->io_private;
1922         ddt_phys_t *ddp = &dde->dde_phys[p];
1923         zio_t *pio;
1924
1925         if (zio->io_error)
1926                 return;
1927
1928         ddt_enter(ddt);
1929
1930         ASSERT(dde->dde_lead_zio[p] == zio);
1931
1932         ddt_phys_fill(ddp, zio->io_bp);
1933
1934         while ((pio = zio_walk_parents(zio)) != NULL)
1935                 ddt_bp_fill(ddp, pio->io_bp, zio->io_txg);
1936
1937         ddt_exit(ddt);
1938 }
1939
1940 static void
1941 zio_ddt_child_write_done(zio_t *zio)
1942 {
1943         int p = zio->io_prop.zp_copies;
1944         ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp);
1945         ddt_entry_t *dde = zio->io_private;
1946         ddt_phys_t *ddp = &dde->dde_phys[p];
1947
1948         ddt_enter(ddt);
1949
1950         ASSERT(ddp->ddp_refcnt == 0);
1951         ASSERT(dde->dde_lead_zio[p] == zio);
1952         dde->dde_lead_zio[p] = NULL;
1953
1954         if (zio->io_error == 0) {
1955                 while (zio_walk_parents(zio) != NULL)
1956                         ddt_phys_addref(ddp);
1957         } else {
1958                 ddt_phys_clear(ddp);
1959         }
1960
1961         ddt_exit(ddt);
1962 }
1963
1964 static void
1965 zio_ddt_ditto_write_done(zio_t *zio)
1966 {
1967         int p = DDT_PHYS_DITTO;
1968         zio_prop_t *zp = &zio->io_prop;
1969         blkptr_t *bp = zio->io_bp;
1970         ddt_t *ddt = ddt_select(zio->io_spa, bp);
1971         ddt_entry_t *dde = zio->io_private;
1972         ddt_phys_t *ddp = &dde->dde_phys[p];
1973         ddt_key_t *ddk = &dde->dde_key;
1974
1975         ddt_enter(ddt);
1976
1977         ASSERT(ddp->ddp_refcnt == 0);
1978         ASSERT(dde->dde_lead_zio[p] == zio);
1979         dde->dde_lead_zio[p] = NULL;
1980
1981         if (zio->io_error == 0) {
1982                 ASSERT(ZIO_CHECKSUM_EQUAL(bp->blk_cksum, ddk->ddk_cksum));
1983                 ASSERT(zp->zp_copies < SPA_DVAS_PER_BP);
1984                 ASSERT(zp->zp_copies == BP_GET_NDVAS(bp) - BP_IS_GANG(bp));
1985                 if (ddp->ddp_phys_birth != 0)
1986                         ddt_phys_free(ddt, ddk, ddp, zio->io_txg);
1987                 ddt_phys_fill(ddp, bp);
1988         }
1989
1990         ddt_exit(ddt);
1991 }
1992
1993 static int
1994 zio_ddt_write(zio_t *zio)
1995 {
1996         spa_t *spa = zio->io_spa;
1997         blkptr_t *bp = zio->io_bp;
1998         uint64_t txg = zio->io_txg;
1999         zio_prop_t *zp = &zio->io_prop;
2000         int p = zp->zp_copies;
2001         int ditto_copies;
2002         zio_t *cio = NULL;
2003         zio_t *dio = NULL;
2004         ddt_t *ddt = ddt_select(spa, bp);
2005         ddt_entry_t *dde;
2006         ddt_phys_t *ddp;
2007
2008         ASSERT(BP_GET_DEDUP(bp));
2009         ASSERT(BP_GET_CHECKSUM(bp) == zp->zp_checksum);
2010         ASSERT(BP_IS_HOLE(bp) || zio->io_bp_override);
2011
2012         ddt_enter(ddt);
2013         dde = ddt_lookup(ddt, bp, B_TRUE);
2014         ddp = &dde->dde_phys[p];
2015
2016         if (zp->zp_dedup_verify && zio_ddt_collision(zio, ddt, dde)) {
2017                 /*
2018                  * If we're using a weak checksum, upgrade to a strong checksum
2019                  * and try again.  If we're already using a strong checksum,
2020                  * we can't resolve it, so just convert to an ordinary write.
2021                  * (And automatically e-mail a paper to Nature?)
2022                  */
2023                 if (!zio_checksum_table[zp->zp_checksum].ci_dedup) {
2024                         zp->zp_checksum = spa_dedup_checksum(spa);
2025                         zio_pop_transforms(zio);
2026                         zio->io_stage = ZIO_STAGE_OPEN;
2027                         BP_ZERO(bp);
2028                 } else {
2029                         zp->zp_dedup = 0;
2030                 }
2031                 zio->io_pipeline = ZIO_WRITE_PIPELINE;
2032                 ddt_exit(ddt);
2033                 return (ZIO_PIPELINE_CONTINUE);
2034         }
2035
2036         ditto_copies = ddt_ditto_copies_needed(ddt, dde, ddp);
2037         ASSERT(ditto_copies < SPA_DVAS_PER_BP);
2038
2039         if (ditto_copies > ddt_ditto_copies_present(dde) &&
2040             dde->dde_lead_zio[DDT_PHYS_DITTO] == NULL) {
2041                 zio_prop_t czp = *zp;
2042
2043                 czp.zp_copies = ditto_copies;
2044
2045                 /*
2046                  * If we arrived here with an override bp, we won't have run
2047                  * the transform stack, so we won't have the data we need to
2048                  * generate a child i/o.  So, toss the override bp and restart.
2049                  * This is safe, because using the override bp is just an
2050                  * optimization; and it's rare, so the cost doesn't matter.
2051                  */
2052                 if (zio->io_bp_override) {
2053                         zio_pop_transforms(zio);
2054                         zio->io_stage = ZIO_STAGE_OPEN;
2055                         zio->io_pipeline = ZIO_WRITE_PIPELINE;
2056                         zio->io_bp_override = NULL;
2057                         BP_ZERO(bp);
2058                         ddt_exit(ddt);
2059                         return (ZIO_PIPELINE_CONTINUE);
2060                 }
2061
2062                 dio = zio_write(zio, spa, txg, bp, zio->io_orig_data,
2063                     zio->io_orig_size, &czp, NULL,
2064                     zio_ddt_ditto_write_done, dde, zio->io_priority,
2065                     ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark);
2066
2067                 zio_push_transform(dio, zio->io_data, zio->io_size, 0, NULL);
2068                 dde->dde_lead_zio[DDT_PHYS_DITTO] = dio;
2069         }
2070
2071         if (ddp->ddp_phys_birth != 0 || dde->dde_lead_zio[p] != NULL) {
2072                 if (ddp->ddp_phys_birth != 0)
2073                         ddt_bp_fill(ddp, bp, txg);
2074                 if (dde->dde_lead_zio[p] != NULL)
2075                         zio_add_child(zio, dde->dde_lead_zio[p]);
2076                 else
2077                         ddt_phys_addref(ddp);
2078         } else if (zio->io_bp_override) {
2079                 ASSERT(bp->blk_birth == txg);
2080                 ASSERT(BP_EQUAL(bp, zio->io_bp_override));
2081                 ddt_phys_fill(ddp, bp);
2082                 ddt_phys_addref(ddp);
2083         } else {
2084                 cio = zio_write(zio, spa, txg, bp, zio->io_orig_data,
2085                     zio->io_orig_size, zp, zio_ddt_child_write_ready,
2086                     zio_ddt_child_write_done, dde, zio->io_priority,
2087                     ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark);
2088
2089                 zio_push_transform(cio, zio->io_data, zio->io_size, 0, NULL);
2090                 dde->dde_lead_zio[p] = cio;
2091         }
2092
2093         ddt_exit(ddt);
2094
2095         if (cio)
2096                 zio_nowait(cio);
2097         if (dio)
2098                 zio_nowait(dio);
2099
2100         return (ZIO_PIPELINE_CONTINUE);
2101 }
2102
2103 ddt_entry_t *freedde; /* for debugging */
2104
2105 static int
2106 zio_ddt_free(zio_t *zio)
2107 {
2108         spa_t *spa = zio->io_spa;
2109         blkptr_t *bp = zio->io_bp;
2110         ddt_t *ddt = ddt_select(spa, bp);
2111         ddt_entry_t *dde;
2112         ddt_phys_t *ddp;
2113
2114         ASSERT(BP_GET_DEDUP(bp));
2115         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2116
2117         ddt_enter(ddt);
2118         freedde = dde = ddt_lookup(ddt, bp, B_TRUE);
2119         ddp = ddt_phys_select(dde, bp);
2120         ddt_phys_decref(ddp);
2121         ddt_exit(ddt);
2122
2123         return (ZIO_PIPELINE_CONTINUE);
2124 }
2125
2126 /*
2127  * ==========================================================================
2128  * Allocate and free blocks
2129  * ==========================================================================
2130  */
2131 static int
2132 zio_dva_allocate(zio_t *zio)
2133 {
2134         spa_t *spa = zio->io_spa;
2135         metaslab_class_t *mc = spa_normal_class(spa);
2136         blkptr_t *bp = zio->io_bp;
2137         int error;
2138
2139         if (zio->io_gang_leader == NULL) {
2140                 ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
2141                 zio->io_gang_leader = zio;
2142         }
2143
2144         ASSERT(BP_IS_HOLE(bp));
2145         ASSERT3U(BP_GET_NDVAS(bp), ==, 0);
2146         ASSERT3U(zio->io_prop.zp_copies, >, 0);
2147         ASSERT3U(zio->io_prop.zp_copies, <=, spa_max_replication(spa));
2148         ASSERT3U(zio->io_size, ==, BP_GET_PSIZE(bp));
2149
2150         error = metaslab_alloc(spa, mc, zio->io_size, bp,
2151             zio->io_prop.zp_copies, zio->io_txg, NULL, 0);
2152
2153         if (error) {
2154                 if (error == ENOSPC && zio->io_size > SPA_MINBLOCKSIZE)
2155                         return (zio_write_gang_block(zio));
2156                 zio->io_error = error;
2157         }
2158
2159         return (ZIO_PIPELINE_CONTINUE);
2160 }
2161
2162 static int
2163 zio_dva_free(zio_t *zio)
2164 {
2165         metaslab_free(zio->io_spa, zio->io_bp, zio->io_txg, B_FALSE);
2166
2167         return (ZIO_PIPELINE_CONTINUE);
2168 }
2169
2170 static int
2171 zio_dva_claim(zio_t *zio)
2172 {
2173         int error;
2174
2175         error = metaslab_claim(zio->io_spa, zio->io_bp, zio->io_txg);
2176         if (error)
2177                 zio->io_error = error;
2178
2179         return (ZIO_PIPELINE_CONTINUE);
2180 }
2181
2182 /*
2183  * Undo an allocation.  This is used by zio_done() when an I/O fails
2184  * and we want to give back the block we just allocated.
2185  * This handles both normal blocks and gang blocks.
2186  */
2187 static void
2188 zio_dva_unallocate(zio_t *zio, zio_gang_node_t *gn, blkptr_t *bp)
2189 {
2190         ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp));
2191         ASSERT(zio->io_bp_override == NULL);
2192
2193         if (!BP_IS_HOLE(bp))
2194                 metaslab_free(zio->io_spa, bp, bp->blk_birth, B_TRUE);
2195
2196         if (gn != NULL) {
2197                 for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
2198                         zio_dva_unallocate(zio, gn->gn_child[g],
2199                             &gn->gn_gbh->zg_blkptr[g]);
2200                 }
2201         }
2202 }
2203
2204 /*
2205  * Try to allocate an intent log block.  Return 0 on success, errno on failure.
2206  */
2207 int
2208 zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp, blkptr_t *old_bp,
2209     uint64_t size, boolean_t use_slog)
2210 {
2211         int error = 1;
2212
2213         ASSERT(txg > spa_syncing_txg(spa));
2214
2215         if (use_slog)
2216                 error = metaslab_alloc(spa, spa_log_class(spa), size,
2217                     new_bp, 1, txg, old_bp, METASLAB_HINTBP_AVOID);
2218
2219         if (error)
2220                 error = metaslab_alloc(spa, spa_normal_class(spa), size,
2221                     new_bp, 1, txg, old_bp, METASLAB_HINTBP_AVOID);
2222
2223         if (error == 0) {
2224                 BP_SET_LSIZE(new_bp, size);
2225                 BP_SET_PSIZE(new_bp, size);
2226                 BP_SET_COMPRESS(new_bp, ZIO_COMPRESS_OFF);
2227                 BP_SET_CHECKSUM(new_bp,
2228                     spa_version(spa) >= SPA_VERSION_SLIM_ZIL
2229                     ? ZIO_CHECKSUM_ZILOG2 : ZIO_CHECKSUM_ZILOG);
2230                 BP_SET_TYPE(new_bp, DMU_OT_INTENT_LOG);
2231                 BP_SET_LEVEL(new_bp, 0);
2232                 BP_SET_DEDUP(new_bp, 0);
2233                 BP_SET_BYTEORDER(new_bp, ZFS_HOST_BYTEORDER);
2234         }
2235
2236         return (error);
2237 }
2238
2239 /*
2240  * Free an intent log block.
2241  */
2242 void
2243 zio_free_zil(spa_t *spa, uint64_t txg, blkptr_t *bp)
2244 {
2245         ASSERT(BP_GET_TYPE(bp) == DMU_OT_INTENT_LOG);
2246         ASSERT(!BP_IS_GANG(bp));
2247
2248         zio_free(spa, txg, bp);
2249 }
2250
2251 /*
2252  * ==========================================================================
2253  * Read and write to physical devices
2254  * ==========================================================================
2255  */
2256 static int
2257 zio_vdev_io_start(zio_t *zio)
2258 {
2259         vdev_t *vd = zio->io_vd;
2260         uint64_t align;
2261         spa_t *spa = zio->io_spa;
2262
2263         ASSERT(zio->io_error == 0);
2264         ASSERT(zio->io_child_error[ZIO_CHILD_VDEV] == 0);
2265
2266         if (vd == NULL) {
2267                 if (!(zio->io_flags & ZIO_FLAG_CONFIG_WRITER))
2268                         spa_config_enter(spa, SCL_ZIO, zio, RW_READER);
2269
2270                 /*
2271                  * The mirror_ops handle multiple DVAs in a single BP.
2272                  */
2273                 return (vdev_mirror_ops.vdev_op_io_start(zio));
2274         }
2275
2276         /*
2277          * We keep track of time-sensitive I/Os so that the scan thread
2278          * can quickly react to certain workloads.  In particular, we care
2279          * about non-scrubbing, top-level reads and writes with the following
2280          * characteristics:
2281          *      - synchronous writes of user data to non-slog devices
2282          *      - any reads of user data
2283          * When these conditions are met, adjust the timestamp of spa_last_io
2284          * which allows the scan thread to adjust its workload accordingly.
2285          */
2286         if (!(zio->io_flags & ZIO_FLAG_SCAN_THREAD) && zio->io_bp != NULL &&
2287             vd == vd->vdev_top && !vd->vdev_islog &&
2288             zio->io_bookmark.zb_objset != DMU_META_OBJSET &&
2289             zio->io_txg != spa_syncing_txg(spa)) {
2290                 uint64_t old = spa->spa_last_io;
2291                 uint64_t new = ddi_get_lbolt64();
2292                 if (old != new)
2293                         (void) atomic_cas_64(&spa->spa_last_io, old, new);
2294         }
2295
2296         align = 1ULL << vd->vdev_top->vdev_ashift;
2297
2298         if (P2PHASE(zio->io_size, align) != 0) {
2299                 uint64_t asize = P2ROUNDUP(zio->io_size, align);
2300                 char *abuf = zio_buf_alloc(asize);
2301                 ASSERT(vd == vd->vdev_top);
2302                 if (zio->io_type == ZIO_TYPE_WRITE) {
2303                         bcopy(zio->io_data, abuf, zio->io_size);
2304                         bzero(abuf + zio->io_size, asize - zio->io_size);
2305                 }
2306                 zio_push_transform(zio, abuf, asize, asize, zio_subblock);
2307         }
2308
2309         ASSERT(P2PHASE(zio->io_offset, align) == 0);
2310         ASSERT(P2PHASE(zio->io_size, align) == 0);
2311         VERIFY(zio->io_type != ZIO_TYPE_WRITE || spa_writeable(spa));
2312
2313         /*
2314          * If this is a repair I/O, and there's no self-healing involved --
2315          * that is, we're just resilvering what we expect to resilver --
2316          * then don't do the I/O unless zio's txg is actually in vd's DTL.
2317          * This prevents spurious resilvering with nested replication.
2318          * For example, given a mirror of mirrors, (A+B)+(C+D), if only
2319          * A is out of date, we'll read from C+D, then use the data to
2320          * resilver A+B -- but we don't actually want to resilver B, just A.
2321          * The top-level mirror has no way to know this, so instead we just
2322          * discard unnecessary repairs as we work our way down the vdev tree.
2323          * The same logic applies to any form of nested replication:
2324          * ditto + mirror, RAID-Z + replacing, etc.  This covers them all.
2325          */
2326         if ((zio->io_flags & ZIO_FLAG_IO_REPAIR) &&
2327             !(zio->io_flags & ZIO_FLAG_SELF_HEAL) &&
2328             zio->io_txg != 0 && /* not a delegated i/o */
2329             !vdev_dtl_contains(vd, DTL_PARTIAL, zio->io_txg, 1)) {
2330                 ASSERT(zio->io_type == ZIO_TYPE_WRITE);
2331                 zio_vdev_io_bypass(zio);
2332                 return (ZIO_PIPELINE_CONTINUE);
2333         }
2334
2335         if (vd->vdev_ops->vdev_op_leaf &&
2336             (zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE)) {
2337
2338                 if (zio->io_type == ZIO_TYPE_READ && vdev_cache_read(zio) == 0)
2339                         return (ZIO_PIPELINE_CONTINUE);
2340
2341                 if ((zio = vdev_queue_io(zio)) == NULL)
2342                         return (ZIO_PIPELINE_STOP);
2343
2344                 if (!vdev_accessible(vd, zio)) {
2345                         zio->io_error = ENXIO;
2346                         zio_interrupt(zio);
2347                         return (ZIO_PIPELINE_STOP);
2348                 }
2349         }
2350
2351         return (vd->vdev_ops->vdev_op_io_start(zio));
2352 }
2353
2354 static int
2355 zio_vdev_io_done(zio_t *zio)
2356 {
2357         vdev_t *vd = zio->io_vd;
2358         vdev_ops_t *ops = vd ? vd->vdev_ops : &vdev_mirror_ops;
2359         boolean_t unexpected_error = B_FALSE;
2360
2361         if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE))
2362                 return (ZIO_PIPELINE_STOP);
2363
2364         ASSERT(zio->io_type == ZIO_TYPE_READ || zio->io_type == ZIO_TYPE_WRITE);
2365
2366         if (vd != NULL && vd->vdev_ops->vdev_op_leaf) {
2367
2368                 vdev_queue_io_done(zio);
2369
2370                 if (zio->io_type == ZIO_TYPE_WRITE)
2371                         vdev_cache_write(zio);
2372
2373                 if (zio_injection_enabled && zio->io_error == 0)
2374                         zio->io_error = zio_handle_device_injection(vd,
2375                             zio, EIO);
2376
2377                 if (zio_injection_enabled && zio->io_error == 0)
2378                         zio->io_error = zio_handle_label_injection(zio, EIO);
2379
2380                 if (zio->io_error) {
2381                         if (!vdev_accessible(vd, zio)) {
2382                                 zio->io_error = ENXIO;
2383                         } else {
2384                                 unexpected_error = B_TRUE;
2385                         }
2386                 }
2387         }
2388
2389         ops->vdev_op_io_done(zio);
2390
2391         if (unexpected_error)
2392                 VERIFY(vdev_probe(vd, zio) == NULL);
2393
2394         return (ZIO_PIPELINE_CONTINUE);
2395 }
2396
2397 /*
2398  * For non-raidz ZIOs, we can just copy aside the bad data read from the
2399  * disk, and use that to finish the checksum ereport later.
2400  */
2401 static void
2402 zio_vsd_default_cksum_finish(zio_cksum_report_t *zcr,
2403     const void *good_buf)
2404 {
2405         /* no processing needed */
2406         zfs_ereport_finish_checksum(zcr, good_buf, zcr->zcr_cbdata, B_FALSE);
2407 }
2408
2409 /*ARGSUSED*/
2410 void
2411 zio_vsd_default_cksum_report(zio_t *zio, zio_cksum_report_t *zcr, void *ignored)
2412 {
2413         void *buf = zio_buf_alloc(zio->io_size);
2414
2415         bcopy(zio->io_data, buf, zio->io_size);
2416
2417         zcr->zcr_cbinfo = zio->io_size;
2418         zcr->zcr_cbdata = buf;
2419         zcr->zcr_finish = zio_vsd_default_cksum_finish;
2420         zcr->zcr_free = zio_buf_free;
2421 }
2422
2423 static int
2424 zio_vdev_io_assess(zio_t *zio)
2425 {
2426         vdev_t *vd = zio->io_vd;
2427
2428         if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE))
2429                 return (ZIO_PIPELINE_STOP);
2430
2431         if (vd == NULL && !(zio->io_flags & ZIO_FLAG_CONFIG_WRITER))
2432                 spa_config_exit(zio->io_spa, SCL_ZIO, zio);
2433
2434         if (zio->io_vsd != NULL) {
2435                 zio->io_vsd_ops->vsd_free(zio);
2436                 zio->io_vsd = NULL;
2437         }
2438
2439         if (zio_injection_enabled && zio->io_error == 0)
2440                 zio->io_error = zio_handle_fault_injection(zio, EIO);
2441
2442         /*
2443          * If the I/O failed, determine whether we should attempt to retry it.
2444          *
2445          * On retry, we cut in line in the issue queue, since we don't want
2446          * compression/checksumming/etc. work to prevent our (cheap) IO reissue.
2447          */
2448         if (zio->io_error && vd == NULL &&
2449             !(zio->io_flags & (ZIO_FLAG_DONT_RETRY | ZIO_FLAG_IO_RETRY))) {
2450                 ASSERT(!(zio->io_flags & ZIO_FLAG_DONT_QUEUE)); /* not a leaf */
2451                 ASSERT(!(zio->io_flags & ZIO_FLAG_IO_BYPASS));  /* not a leaf */
2452                 zio->io_error = 0;
2453                 zio->io_flags |= ZIO_FLAG_IO_RETRY |
2454                     ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_AGGREGATE;
2455                 zio->io_stage = ZIO_STAGE_VDEV_IO_START >> 1;
2456                 zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE,
2457                     zio_requeue_io_start_cut_in_line);
2458                 return (ZIO_PIPELINE_STOP);
2459         }
2460
2461         /*
2462          * If we got an error on a leaf device, convert it to ENXIO
2463          * if the device is not accessible at all.
2464          */
2465         if (zio->io_error && vd != NULL && vd->vdev_ops->vdev_op_leaf &&
2466             !vdev_accessible(vd, zio))
2467                 zio->io_error = ENXIO;
2468
2469         /*
2470          * If we can't write to an interior vdev (mirror or RAID-Z),
2471          * set vdev_cant_write so that we stop trying to allocate from it.
2472          */
2473         if (zio->io_error == ENXIO && zio->io_type == ZIO_TYPE_WRITE &&
2474             vd != NULL && !vd->vdev_ops->vdev_op_leaf)
2475                 vd->vdev_cant_write = B_TRUE;
2476
2477         if (zio->io_error)
2478                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
2479
2480         return (ZIO_PIPELINE_CONTINUE);
2481 }
2482
2483 void
2484 zio_vdev_io_reissue(zio_t *zio)
2485 {
2486         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START);
2487         ASSERT(zio->io_error == 0);
2488
2489         zio->io_stage >>= 1;
2490 }
2491
2492 void
2493 zio_vdev_io_redone(zio_t *zio)
2494 {
2495         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_DONE);
2496
2497         zio->io_stage >>= 1;
2498 }
2499
2500 void
2501 zio_vdev_io_bypass(zio_t *zio)
2502 {
2503         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START);
2504         ASSERT(zio->io_error == 0);
2505
2506         zio->io_flags |= ZIO_FLAG_IO_BYPASS;
2507         zio->io_stage = ZIO_STAGE_VDEV_IO_ASSESS >> 1;
2508 }
2509
2510 /*
2511  * ==========================================================================
2512  * Generate and verify checksums
2513  * ==========================================================================
2514  */
2515 static int
2516 zio_checksum_generate(zio_t *zio)
2517 {
2518         blkptr_t *bp = zio->io_bp;
2519         enum zio_checksum checksum;
2520
2521         if (bp == NULL) {
2522                 /*
2523                  * This is zio_write_phys().
2524                  * We're either generating a label checksum, or none at all.
2525                  */
2526                 checksum = zio->io_prop.zp_checksum;
2527
2528                 if (checksum == ZIO_CHECKSUM_OFF)
2529                         return (ZIO_PIPELINE_CONTINUE);
2530
2531                 ASSERT(checksum == ZIO_CHECKSUM_LABEL);
2532         } else {
2533                 if (BP_IS_GANG(bp) && zio->io_child_type == ZIO_CHILD_GANG) {
2534                         ASSERT(!IO_IS_ALLOCATING(zio));
2535                         checksum = ZIO_CHECKSUM_GANG_HEADER;
2536                 } else {
2537                         checksum = BP_GET_CHECKSUM(bp);
2538                 }
2539         }
2540
2541         zio_checksum_compute(zio, checksum, zio->io_data, zio->io_size);
2542
2543         return (ZIO_PIPELINE_CONTINUE);
2544 }
2545
2546 static int
2547 zio_checksum_verify(zio_t *zio)
2548 {
2549         zio_bad_cksum_t info;
2550         blkptr_t *bp = zio->io_bp;
2551         int error;
2552
2553         ASSERT(zio->io_vd != NULL);
2554
2555         if (bp == NULL) {
2556                 /*
2557                  * This is zio_read_phys().
2558                  * We're either verifying a label checksum, or nothing at all.
2559                  */
2560                 if (zio->io_prop.zp_checksum == ZIO_CHECKSUM_OFF)
2561                         return (ZIO_PIPELINE_CONTINUE);
2562
2563                 ASSERT(zio->io_prop.zp_checksum == ZIO_CHECKSUM_LABEL);
2564         }
2565
2566         if ((error = zio_checksum_error(zio, &info)) != 0) {
2567                 zio->io_error = error;
2568                 if (!(zio->io_flags & ZIO_FLAG_SPECULATIVE)) {
2569                         zfs_ereport_start_checksum(zio->io_spa,
2570                             zio->io_vd, zio, zio->io_offset,
2571                             zio->io_size, NULL, &info);
2572                 }
2573         }
2574
2575         return (ZIO_PIPELINE_CONTINUE);
2576 }
2577
2578 /*
2579  * Called by RAID-Z to ensure we don't compute the checksum twice.
2580  */
2581 void
2582 zio_checksum_verified(zio_t *zio)
2583 {
2584         zio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY;
2585 }
2586
2587 /*
2588  * ==========================================================================
2589  * Error rank.  Error are ranked in the order 0, ENXIO, ECKSUM, EIO, other.
2590  * An error of 0 indictes success.  ENXIO indicates whole-device failure,
2591  * which may be transient (e.g. unplugged) or permament.  ECKSUM and EIO
2592  * indicate errors that are specific to one I/O, and most likely permanent.
2593  * Any other error is presumed to be worse because we weren't expecting it.
2594  * ==========================================================================
2595  */
2596 int
2597 zio_worst_error(int e1, int e2)
2598 {
2599         static int zio_error_rank[] = { 0, ENXIO, ECKSUM, EIO };
2600         int r1, r2;
2601
2602         for (r1 = 0; r1 < sizeof (zio_error_rank) / sizeof (int); r1++)
2603                 if (e1 == zio_error_rank[r1])
2604                         break;
2605
2606         for (r2 = 0; r2 < sizeof (zio_error_rank) / sizeof (int); r2++)
2607                 if (e2 == zio_error_rank[r2])
2608                         break;
2609
2610         return (r1 > r2 ? e1 : e2);
2611 }
2612
2613 /*
2614  * ==========================================================================
2615  * I/O completion
2616  * ==========================================================================
2617  */
2618 static int
2619 zio_ready(zio_t *zio)
2620 {
2621         blkptr_t *bp = zio->io_bp;
2622         zio_t *pio, *pio_next;
2623
2624         if (zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_READY) ||
2625             zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_READY))
2626                 return (ZIO_PIPELINE_STOP);
2627
2628         if (zio->io_ready) {
2629                 ASSERT(IO_IS_ALLOCATING(zio));
2630                 ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp));
2631                 ASSERT(zio->io_children[ZIO_CHILD_GANG][ZIO_WAIT_READY] == 0);
2632
2633                 zio->io_ready(zio);
2634         }
2635
2636         if (bp != NULL && bp != &zio->io_bp_copy)
2637                 zio->io_bp_copy = *bp;
2638
2639         if (zio->io_error)
2640                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
2641
2642         mutex_enter(&zio->io_lock);
2643         zio->io_state[ZIO_WAIT_READY] = 1;
2644         pio = zio_walk_parents(zio);
2645         mutex_exit(&zio->io_lock);
2646
2647         /*
2648          * As we notify zio's parents, new parents could be added.
2649          * New parents go to the head of zio's io_parent_list, however,
2650          * so we will (correctly) not notify them.  The remainder of zio's
2651          * io_parent_list, from 'pio_next' onward, cannot change because
2652          * all parents must wait for us to be done before they can be done.
2653          */
2654         for (; pio != NULL; pio = pio_next) {
2655                 pio_next = zio_walk_parents(zio);
2656                 zio_notify_parent(pio, zio, ZIO_WAIT_READY);
2657         }
2658
2659         if (zio->io_flags & ZIO_FLAG_NODATA) {
2660                 if (BP_IS_GANG(bp)) {
2661                         zio->io_flags &= ~ZIO_FLAG_NODATA;
2662                 } else {
2663                         ASSERT((uintptr_t)zio->io_data < SPA_MAXBLOCKSIZE);
2664                         zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES;
2665                 }
2666         }
2667
2668         if (zio_injection_enabled &&
2669             zio->io_spa->spa_syncing_txg == zio->io_txg)
2670                 zio_handle_ignored_writes(zio);
2671
2672         return (ZIO_PIPELINE_CONTINUE);
2673 }
2674
2675 static int
2676 zio_done(zio_t *zio)
2677 {
2678         spa_t *spa = zio->io_spa;
2679         zio_t *lio = zio->io_logical;
2680         blkptr_t *bp = zio->io_bp;
2681         vdev_t *vd = zio->io_vd;
2682         uint64_t psize = zio->io_size;
2683         zio_t *pio, *pio_next;
2684
2685         /*
2686          * If our children haven't all completed,
2687          * wait for them and then repeat this pipeline stage.
2688          */
2689         if (zio_wait_for_children(zio, ZIO_CHILD_VDEV, ZIO_WAIT_DONE) ||
2690             zio_wait_for_children(zio, ZIO_CHILD_GANG, ZIO_WAIT_DONE) ||
2691             zio_wait_for_children(zio, ZIO_CHILD_DDT, ZIO_WAIT_DONE) ||
2692             zio_wait_for_children(zio, ZIO_CHILD_LOGICAL, ZIO_WAIT_DONE))
2693                 return (ZIO_PIPELINE_STOP);
2694
2695         for (int c = 0; c < ZIO_CHILD_TYPES; c++)
2696                 for (int w = 0; w < ZIO_WAIT_TYPES; w++)
2697                         ASSERT(zio->io_children[c][w] == 0);
2698
2699         if (bp != NULL) {
2700                 ASSERT(bp->blk_pad[0] == 0);
2701                 ASSERT(bp->blk_pad[1] == 0);
2702                 ASSERT(bcmp(bp, &zio->io_bp_copy, sizeof (blkptr_t)) == 0 ||
2703                     (bp == zio_unique_parent(zio)->io_bp));
2704                 if (zio->io_type == ZIO_TYPE_WRITE && !BP_IS_HOLE(bp) &&
2705                     zio->io_bp_override == NULL &&
2706                     !(zio->io_flags & ZIO_FLAG_IO_REPAIR)) {
2707                         ASSERT(!BP_SHOULD_BYTESWAP(bp));
2708                         ASSERT3U(zio->io_prop.zp_copies, <=, BP_GET_NDVAS(bp));
2709                         ASSERT(BP_COUNT_GANG(bp) == 0 ||
2710                             (BP_COUNT_GANG(bp) == BP_GET_NDVAS(bp)));
2711                 }
2712         }
2713
2714         /*
2715          * If there were child vdev/gang/ddt errors, they apply to us now.
2716          */
2717         zio_inherit_child_errors(zio, ZIO_CHILD_VDEV);
2718         zio_inherit_child_errors(zio, ZIO_CHILD_GANG);
2719         zio_inherit_child_errors(zio, ZIO_CHILD_DDT);
2720
2721         /*
2722          * If the I/O on the transformed data was successful, generate any
2723          * checksum reports now while we still have the transformed data.
2724          */
2725         if (zio->io_error == 0) {
2726                 while (zio->io_cksum_report != NULL) {
2727                         zio_cksum_report_t *zcr = zio->io_cksum_report;
2728                         uint64_t align = zcr->zcr_align;
2729                         uint64_t asize = P2ROUNDUP(psize, align);
2730                         char *abuf = zio->io_data;
2731
2732                         if (asize != psize) {
2733                                 abuf = zio_buf_alloc(asize);
2734                                 bcopy(zio->io_data, abuf, psize);
2735                                 bzero(abuf + psize, asize - psize);
2736                         }
2737
2738                         zio->io_cksum_report = zcr->zcr_next;
2739                         zcr->zcr_next = NULL;
2740                         zcr->zcr_finish(zcr, abuf);
2741                         zfs_ereport_free_checksum(zcr);
2742
2743                         if (asize != psize)
2744                                 zio_buf_free(abuf, asize);
2745                 }
2746         }
2747
2748         zio_pop_transforms(zio);        /* note: may set zio->io_error */
2749
2750         vdev_stat_update(zio, psize);
2751
2752         if (zio->io_error) {
2753                 /*
2754                  * If this I/O is attached to a particular vdev,
2755                  * generate an error message describing the I/O failure
2756                  * at the block level.  We ignore these errors if the
2757                  * device is currently unavailable.
2758                  */
2759                 if (zio->io_error != ECKSUM && vd != NULL && !vdev_is_dead(vd))
2760                         zfs_ereport_post(FM_EREPORT_ZFS_IO, spa, vd, zio, 0, 0);
2761
2762                 if ((zio->io_error == EIO || !(zio->io_flags &
2763                     (ZIO_FLAG_SPECULATIVE | ZIO_FLAG_DONT_PROPAGATE))) &&
2764                     zio == lio) {
2765                         /*
2766                          * For logical I/O requests, tell the SPA to log the
2767                          * error and generate a logical data ereport.
2768                          */
2769                         spa_log_error(spa, zio);
2770                         zfs_ereport_post(FM_EREPORT_ZFS_DATA, spa, NULL, zio,
2771                             0, 0);
2772                 }
2773         }
2774
2775         if (zio->io_error && zio == lio) {
2776                 /*
2777                  * Determine whether zio should be reexecuted.  This will
2778                  * propagate all the way to the root via zio_notify_parent().
2779                  */
2780                 ASSERT(vd == NULL && bp != NULL);
2781                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2782
2783                 if (IO_IS_ALLOCATING(zio) &&
2784                     !(zio->io_flags & ZIO_FLAG_CANFAIL)) {
2785                         if (zio->io_error != ENOSPC)
2786                                 zio->io_reexecute |= ZIO_REEXECUTE_NOW;
2787                         else
2788                                 zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
2789                 }
2790
2791                 if ((zio->io_type == ZIO_TYPE_READ ||
2792                     zio->io_type == ZIO_TYPE_FREE) &&
2793                     !(zio->io_flags & ZIO_FLAG_SCAN_THREAD) &&
2794                     zio->io_error == ENXIO &&
2795                     spa_load_state(spa) == SPA_LOAD_NONE &&
2796                     spa_get_failmode(spa) != ZIO_FAILURE_MODE_CONTINUE)
2797                         zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
2798
2799                 if (!(zio->io_flags & ZIO_FLAG_CANFAIL) && !zio->io_reexecute)
2800                         zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
2801
2802                 /*
2803                  * Here is a possibly good place to attempt to do
2804                  * either combinatorial reconstruction or error correction
2805                  * based on checksums.  It also might be a good place
2806                  * to send out preliminary ereports before we suspend
2807                  * processing.
2808                  */
2809         }
2810
2811         /*
2812          * If there were logical child errors, they apply to us now.
2813          * We defer this until now to avoid conflating logical child
2814          * errors with errors that happened to the zio itself when
2815          * updating vdev stats and reporting FMA events above.
2816          */
2817         zio_inherit_child_errors(zio, ZIO_CHILD_LOGICAL);
2818
2819         if ((zio->io_error || zio->io_reexecute) &&
2820             IO_IS_ALLOCATING(zio) && zio->io_gang_leader == zio &&
2821             !(zio->io_flags & ZIO_FLAG_IO_REWRITE))
2822                 zio_dva_unallocate(zio, zio->io_gang_tree, bp);
2823
2824         zio_gang_tree_free(&zio->io_gang_tree);
2825
2826         /*
2827          * Godfather I/Os should never suspend.
2828          */
2829         if ((zio->io_flags & ZIO_FLAG_GODFATHER) &&
2830             (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND))
2831                 zio->io_reexecute = 0;
2832
2833         if (zio->io_reexecute) {
2834                 /*
2835                  * This is a logical I/O that wants to reexecute.
2836                  *
2837                  * Reexecute is top-down.  When an i/o fails, if it's not
2838                  * the root, it simply notifies its parent and sticks around.
2839                  * The parent, seeing that it still has children in zio_done(),
2840                  * does the same.  This percolates all the way up to the root.
2841                  * The root i/o will reexecute or suspend the entire tree.
2842                  *
2843                  * This approach ensures that zio_reexecute() honors
2844                  * all the original i/o dependency relationships, e.g.
2845                  * parents not executing until children are ready.
2846                  */
2847                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2848
2849                 zio->io_gang_leader = NULL;
2850
2851                 mutex_enter(&zio->io_lock);
2852                 zio->io_state[ZIO_WAIT_DONE] = 1;
2853                 mutex_exit(&zio->io_lock);
2854
2855                 /*
2856                  * "The Godfather" I/O monitors its children but is
2857                  * not a true parent to them. It will track them through
2858                  * the pipeline but severs its ties whenever they get into
2859                  * trouble (e.g. suspended). This allows "The Godfather"
2860                  * I/O to return status without blocking.
2861                  */
2862                 for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) {
2863                         zio_link_t *zl = zio->io_walk_link;
2864                         pio_next = zio_walk_parents(zio);
2865
2866                         if ((pio->io_flags & ZIO_FLAG_GODFATHER) &&
2867                             (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND)) {
2868                                 zio_remove_child(pio, zio, zl);
2869                                 zio_notify_parent(pio, zio, ZIO_WAIT_DONE);
2870                         }
2871                 }
2872
2873                 if ((pio = zio_unique_parent(zio)) != NULL) {
2874                         /*
2875                          * We're not a root i/o, so there's nothing to do
2876                          * but notify our parent.  Don't propagate errors
2877                          * upward since we haven't permanently failed yet.
2878                          */
2879                         ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER));
2880                         zio->io_flags |= ZIO_FLAG_DONT_PROPAGATE;
2881                         zio_notify_parent(pio, zio, ZIO_WAIT_DONE);
2882                 } else if (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND) {
2883                         /*
2884                          * We'd fail again if we reexecuted now, so suspend
2885                          * until conditions improve (e.g. device comes online).
2886                          */
2887                         zio_suspend(spa, zio);
2888                 } else {
2889                         /*
2890                          * Reexecution is potentially a huge amount of work.
2891                          * Hand it off to the otherwise-unused claim taskq.
2892                          */
2893 #ifdef _KERNEL
2894                         (void) taskq_dispatch_safe(
2895                             spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE],
2896                             (task_func_t *)zio_reexecute, zio, TQ_SLEEP,
2897                             &zio->io_task);
2898 #else
2899                         (void) taskq_dispatch(
2900                             spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE],
2901                             (task_func_t *)zio_reexecute, zio, TQ_SLEEP);
2902 #endif
2903                 }
2904                 return (ZIO_PIPELINE_STOP);
2905         }
2906
2907         ASSERT(zio->io_child_count == 0);
2908         ASSERT(zio->io_reexecute == 0);
2909         ASSERT(zio->io_error == 0 || (zio->io_flags & ZIO_FLAG_CANFAIL));
2910
2911         /*
2912          * Report any checksum errors, since the I/O is complete.
2913          */
2914         while (zio->io_cksum_report != NULL) {
2915                 zio_cksum_report_t *zcr = zio->io_cksum_report;
2916                 zio->io_cksum_report = zcr->zcr_next;
2917                 zcr->zcr_next = NULL;
2918                 zcr->zcr_finish(zcr, NULL);
2919                 zfs_ereport_free_checksum(zcr);
2920         }
2921
2922         /*
2923          * It is the responsibility of the done callback to ensure that this
2924          * particular zio is no longer discoverable for adoption, and as
2925          * such, cannot acquire any new parents.
2926          */
2927         if (zio->io_done)
2928                 zio->io_done(zio);
2929
2930         mutex_enter(&zio->io_lock);
2931         zio->io_state[ZIO_WAIT_DONE] = 1;
2932         mutex_exit(&zio->io_lock);
2933
2934         for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) {
2935                 zio_link_t *zl = zio->io_walk_link;
2936                 pio_next = zio_walk_parents(zio);
2937                 zio_remove_child(pio, zio, zl);
2938                 zio_notify_parent(pio, zio, ZIO_WAIT_DONE);
2939         }
2940
2941         if (zio->io_waiter != NULL) {
2942                 mutex_enter(&zio->io_lock);
2943                 zio->io_executor = NULL;
2944                 cv_broadcast(&zio->io_cv);
2945                 mutex_exit(&zio->io_lock);
2946         } else {
2947                 zio_destroy(zio);
2948         }
2949
2950         return (ZIO_PIPELINE_STOP);
2951 }
2952
2953 /*
2954  * ==========================================================================
2955  * I/O pipeline definition
2956  * ==========================================================================
2957  */
2958 static zio_pipe_stage_t *zio_pipeline[] = {
2959         NULL,
2960         zio_read_bp_init,
2961         zio_free_bp_init,
2962         zio_issue_async,
2963         zio_write_bp_init,
2964         zio_checksum_generate,
2965         zio_ddt_read_start,
2966         zio_ddt_read_done,
2967         zio_ddt_write,
2968         zio_ddt_free,
2969         zio_gang_assemble,
2970         zio_gang_issue,
2971         zio_dva_allocate,
2972         zio_dva_free,
2973         zio_dva_claim,
2974         zio_ready,
2975         zio_vdev_io_start,
2976         zio_vdev_io_done,
2977         zio_vdev_io_assess,
2978         zio_checksum_verify,
2979         zio_done
2980 };