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