]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - module/zfs/zio.c
Don't directly cast unsigned long to void*
[FreeBSD/FreeBSD.git] / module / 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) 2011, 2019 by Delphix. All rights reserved.
24  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
25  * Copyright (c) 2017, Intel Corporation.
26  */
27
28 #include <sys/sysmacros.h>
29 #include <sys/zfs_context.h>
30 #include <sys/fm/fs/zfs.h>
31 #include <sys/spa.h>
32 #include <sys/txg.h>
33 #include <sys/spa_impl.h>
34 #include <sys/vdev_impl.h>
35 #include <sys/vdev_trim.h>
36 #include <sys/zio_impl.h>
37 #include <sys/zio_compress.h>
38 #include <sys/zio_checksum.h>
39 #include <sys/dmu_objset.h>
40 #include <sys/arc.h>
41 #include <sys/ddt.h>
42 #include <sys/blkptr.h>
43 #include <sys/zfeature.h>
44 #include <sys/dsl_scan.h>
45 #include <sys/metaslab_impl.h>
46 #include <sys/time.h>
47 #include <sys/trace_zio.h>
48 #include <sys/abd.h>
49 #include <sys/dsl_crypt.h>
50 #include <sys/cityhash.h>
51
52 /*
53  * ==========================================================================
54  * I/O type descriptions
55  * ==========================================================================
56  */
57 const char *zio_type_name[ZIO_TYPES] = {
58         /*
59          * Note: Linux kernel thread name length is limited
60          * so these names will differ from upstream open zfs.
61          */
62         "z_null", "z_rd", "z_wr", "z_fr", "z_cl", "z_ioctl", "z_trim"
63 };
64
65 int zio_dva_throttle_enabled = B_TRUE;
66 int zio_deadman_log_all = B_FALSE;
67
68 /*
69  * ==========================================================================
70  * I/O kmem caches
71  * ==========================================================================
72  */
73 kmem_cache_t *zio_cache;
74 kmem_cache_t *zio_link_cache;
75 kmem_cache_t *zio_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
76 kmem_cache_t *zio_data_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
77 #if defined(ZFS_DEBUG) && !defined(_KERNEL)
78 uint64_t zio_buf_cache_allocs[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
79 uint64_t zio_buf_cache_frees[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT];
80 #endif
81
82 /* Mark IOs as "slow" if they take longer than 30 seconds */
83 int zio_slow_io_ms = (30 * MILLISEC);
84
85 #define BP_SPANB(indblkshift, level) \
86         (((uint64_t)1) << ((level) * ((indblkshift) - SPA_BLKPTRSHIFT)))
87 #define COMPARE_META_LEVEL      0x80000000ul
88 /*
89  * The following actions directly effect the spa's sync-to-convergence logic.
90  * The values below define the sync pass when we start performing the action.
91  * Care should be taken when changing these values as they directly impact
92  * spa_sync() performance. Tuning these values may introduce subtle performance
93  * pathologies and should only be done in the context of performance analysis.
94  * These tunables will eventually be removed and replaced with #defines once
95  * enough analysis has been done to determine optimal values.
96  *
97  * The 'zfs_sync_pass_deferred_free' pass must be greater than 1 to ensure that
98  * regular blocks are not deferred.
99  *
100  * Starting in sync pass 8 (zfs_sync_pass_dont_compress), we disable
101  * compression (including of metadata).  In practice, we don't have this
102  * many sync passes, so this has no effect.
103  *
104  * The original intent was that disabling compression would help the sync
105  * passes to converge. However, in practice disabling compression increases
106  * the average number of sync passes, because when we turn compression off, a
107  * lot of block's size will change and thus we have to re-allocate (not
108  * overwrite) them. It also increases the number of 128KB allocations (e.g.
109  * for indirect blocks and spacemaps) because these will not be compressed.
110  * The 128K allocations are especially detrimental to performance on highly
111  * fragmented systems, which may have very few free segments of this size,
112  * and may need to load new metaslabs to satisfy 128K allocations.
113  */
114 int zfs_sync_pass_deferred_free = 2; /* defer frees starting in this pass */
115 int zfs_sync_pass_dont_compress = 8; /* don't compress starting in this pass */
116 int zfs_sync_pass_rewrite = 2; /* rewrite new bps starting in this pass */
117
118 /*
119  * An allocating zio is one that either currently has the DVA allocate
120  * stage set or will have it later in its lifetime.
121  */
122 #define IO_IS_ALLOCATING(zio) ((zio)->io_orig_pipeline & ZIO_STAGE_DVA_ALLOCATE)
123
124 int zio_requeue_io_start_cut_in_line = 1;
125
126 #ifdef ZFS_DEBUG
127 int zio_buf_debug_limit = 16384;
128 #else
129 int zio_buf_debug_limit = 0;
130 #endif
131
132 static inline void __zio_execute(zio_t *zio);
133
134 static void zio_taskq_dispatch(zio_t *, zio_taskq_type_t, boolean_t);
135
136 void
137 zio_init(void)
138 {
139         size_t c;
140         vmem_t *data_alloc_arena = NULL;
141
142         zio_cache = kmem_cache_create("zio_cache",
143             sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0);
144         zio_link_cache = kmem_cache_create("zio_link_cache",
145             sizeof (zio_link_t), 0, NULL, NULL, NULL, NULL, NULL, 0);
146
147         /*
148          * For small buffers, we want a cache for each multiple of
149          * SPA_MINBLOCKSIZE.  For larger buffers, we want a cache
150          * for each quarter-power of 2.
151          */
152         for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) {
153                 size_t size = (c + 1) << SPA_MINBLOCKSHIFT;
154                 size_t p2 = size;
155                 size_t align = 0;
156                 size_t cflags = (size > zio_buf_debug_limit) ? KMC_NODEBUG : 0;
157
158 #if defined(_ILP32) && defined(_KERNEL)
159                 /*
160                  * Cache size limited to 1M on 32-bit platforms until ARC
161                  * buffers no longer require virtual address space.
162                  */
163                 if (size > zfs_max_recordsize)
164                         break;
165 #endif
166
167                 while (!ISP2(p2))
168                         p2 &= p2 - 1;
169
170 #ifndef _KERNEL
171                 /*
172                  * If we are using watchpoints, put each buffer on its own page,
173                  * to eliminate the performance overhead of trapping to the
174                  * kernel when modifying a non-watched buffer that shares the
175                  * page with a watched buffer.
176                  */
177                 if (arc_watch && !IS_P2ALIGNED(size, PAGESIZE))
178                         continue;
179                 /*
180                  * Here's the problem - on 4K native devices in userland on
181                  * Linux using O_DIRECT, buffers must be 4K aligned or I/O
182                  * will fail with EINVAL, causing zdb (and others) to coredump.
183                  * Since userland probably doesn't need optimized buffer caches,
184                  * we just force 4K alignment on everything.
185                  */
186                 align = 8 * SPA_MINBLOCKSIZE;
187 #else
188                 if (size < PAGESIZE) {
189                         align = SPA_MINBLOCKSIZE;
190                 } else if (IS_P2ALIGNED(size, p2 >> 2)) {
191                         align = PAGESIZE;
192                 }
193 #endif
194
195                 if (align != 0) {
196                         char name[36];
197                         (void) sprintf(name, "zio_buf_%lu", (ulong_t)size);
198                         zio_buf_cache[c] = kmem_cache_create(name, size,
199                             align, NULL, NULL, NULL, NULL, NULL, cflags);
200
201                         (void) sprintf(name, "zio_data_buf_%lu", (ulong_t)size);
202                         zio_data_buf_cache[c] = kmem_cache_create(name, size,
203                             align, NULL, NULL, NULL, NULL,
204                             data_alloc_arena, cflags);
205                 }
206         }
207
208         while (--c != 0) {
209                 ASSERT(zio_buf_cache[c] != NULL);
210                 if (zio_buf_cache[c - 1] == NULL)
211                         zio_buf_cache[c - 1] = zio_buf_cache[c];
212
213                 ASSERT(zio_data_buf_cache[c] != NULL);
214                 if (zio_data_buf_cache[c - 1] == NULL)
215                         zio_data_buf_cache[c - 1] = zio_data_buf_cache[c];
216         }
217
218         zio_inject_init();
219
220         lz4_init();
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 #ifdef _ILP32
232                 /*
233                  * Cache size limited to 1M on 32-bit platforms until ARC
234                  * buffers no longer require virtual address space.
235                  */
236                 if (((c + 1) << SPA_MINBLOCKSHIFT) > zfs_max_recordsize)
237                         break;
238 #endif
239 #if defined(ZFS_DEBUG) && !defined(_KERNEL)
240                 if (zio_buf_cache_allocs[c] != zio_buf_cache_frees[c])
241                         (void) printf("zio_fini: [%d] %llu != %llu\n",
242                             (int)((c + 1) << SPA_MINBLOCKSHIFT),
243                             (long long unsigned)zio_buf_cache_allocs[c],
244                             (long long unsigned)zio_buf_cache_frees[c]);
245 #endif
246                 if (zio_buf_cache[c] != last_cache) {
247                         last_cache = zio_buf_cache[c];
248                         kmem_cache_destroy(zio_buf_cache[c]);
249                 }
250                 zio_buf_cache[c] = NULL;
251
252                 if (zio_data_buf_cache[c] != last_data_cache) {
253                         last_data_cache = zio_data_buf_cache[c];
254                         kmem_cache_destroy(zio_data_buf_cache[c]);
255                 }
256                 zio_data_buf_cache[c] = NULL;
257         }
258
259         kmem_cache_destroy(zio_link_cache);
260         kmem_cache_destroy(zio_cache);
261
262         zio_inject_fini();
263
264         lz4_fini();
265 }
266
267 /*
268  * ==========================================================================
269  * Allocate and free I/O buffers
270  * ==========================================================================
271  */
272
273 /*
274  * Use zio_buf_alloc to allocate ZFS metadata.  This data will appear in a
275  * crashdump if the kernel panics, so use it judiciously.  Obviously, it's
276  * useful to inspect ZFS metadata, but if possible, we should avoid keeping
277  * excess / transient data in-core during a crashdump.
278  */
279 void *
280 zio_buf_alloc(size_t size)
281 {
282         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
283
284         VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
285 #if defined(ZFS_DEBUG) && !defined(_KERNEL)
286         atomic_add_64(&zio_buf_cache_allocs[c], 1);
287 #endif
288
289         return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE));
290 }
291
292 /*
293  * Use zio_data_buf_alloc to allocate data.  The data will not appear in a
294  * crashdump if the kernel panics.  This exists so that we will limit the amount
295  * of ZFS data that shows up in a kernel crashdump.  (Thus reducing the amount
296  * of kernel heap dumped to disk when the kernel panics)
297  */
298 void *
299 zio_data_buf_alloc(size_t size)
300 {
301         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
302
303         VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
304
305         return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE));
306 }
307
308 void
309 zio_buf_free(void *buf, size_t size)
310 {
311         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
312
313         VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
314 #if defined(ZFS_DEBUG) && !defined(_KERNEL)
315         atomic_add_64(&zio_buf_cache_frees[c], 1);
316 #endif
317
318         kmem_cache_free(zio_buf_cache[c], buf);
319 }
320
321 void
322 zio_data_buf_free(void *buf, size_t size)
323 {
324         size_t c = (size - 1) >> SPA_MINBLOCKSHIFT;
325
326         VERIFY3U(c, <, SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT);
327
328         kmem_cache_free(zio_data_buf_cache[c], buf);
329 }
330
331 static void
332 zio_abd_free(void *abd, size_t size)
333 {
334         abd_free((abd_t *)abd);
335 }
336
337 /*
338  * ==========================================================================
339  * Push and pop I/O transform buffers
340  * ==========================================================================
341  */
342 void
343 zio_push_transform(zio_t *zio, abd_t *data, uint64_t size, uint64_t bufsize,
344     zio_transform_func_t *transform)
345 {
346         zio_transform_t *zt = kmem_alloc(sizeof (zio_transform_t), KM_SLEEP);
347
348         zt->zt_orig_abd = zio->io_abd;
349         zt->zt_orig_size = zio->io_size;
350         zt->zt_bufsize = bufsize;
351         zt->zt_transform = transform;
352
353         zt->zt_next = zio->io_transform_stack;
354         zio->io_transform_stack = zt;
355
356         zio->io_abd = data;
357         zio->io_size = size;
358 }
359
360 void
361 zio_pop_transforms(zio_t *zio)
362 {
363         zio_transform_t *zt;
364
365         while ((zt = zio->io_transform_stack) != NULL) {
366                 if (zt->zt_transform != NULL)
367                         zt->zt_transform(zio,
368                             zt->zt_orig_abd, zt->zt_orig_size);
369
370                 if (zt->zt_bufsize != 0)
371                         abd_free(zio->io_abd);
372
373                 zio->io_abd = zt->zt_orig_abd;
374                 zio->io_size = zt->zt_orig_size;
375                 zio->io_transform_stack = zt->zt_next;
376
377                 kmem_free(zt, sizeof (zio_transform_t));
378         }
379 }
380
381 /*
382  * ==========================================================================
383  * I/O transform callbacks for subblocks, decompression, and decryption
384  * ==========================================================================
385  */
386 static void
387 zio_subblock(zio_t *zio, abd_t *data, uint64_t size)
388 {
389         ASSERT(zio->io_size > size);
390
391         if (zio->io_type == ZIO_TYPE_READ)
392                 abd_copy(data, zio->io_abd, size);
393 }
394
395 static void
396 zio_decompress(zio_t *zio, abd_t *data, uint64_t size)
397 {
398         if (zio->io_error == 0) {
399                 void *tmp = abd_borrow_buf(data, size);
400                 int ret = zio_decompress_data(BP_GET_COMPRESS(zio->io_bp),
401                     zio->io_abd, tmp, zio->io_size, size);
402                 abd_return_buf_copy(data, tmp, size);
403
404                 if (zio_injection_enabled && ret == 0)
405                         ret = zio_handle_fault_injection(zio, EINVAL);
406
407                 if (ret != 0)
408                         zio->io_error = SET_ERROR(EIO);
409         }
410 }
411
412 static void
413 zio_decrypt(zio_t *zio, abd_t *data, uint64_t size)
414 {
415         int ret;
416         void *tmp;
417         blkptr_t *bp = zio->io_bp;
418         spa_t *spa = zio->io_spa;
419         uint64_t dsobj = zio->io_bookmark.zb_objset;
420         uint64_t lsize = BP_GET_LSIZE(bp);
421         dmu_object_type_t ot = BP_GET_TYPE(bp);
422         uint8_t salt[ZIO_DATA_SALT_LEN];
423         uint8_t iv[ZIO_DATA_IV_LEN];
424         uint8_t mac[ZIO_DATA_MAC_LEN];
425         boolean_t no_crypt = B_FALSE;
426
427         ASSERT(BP_USES_CRYPT(bp));
428         ASSERT3U(size, !=, 0);
429
430         if (zio->io_error != 0)
431                 return;
432
433         /*
434          * Verify the cksum of MACs stored in an indirect bp. It will always
435          * be possible to verify this since it does not require an encryption
436          * key.
437          */
438         if (BP_HAS_INDIRECT_MAC_CKSUM(bp)) {
439                 zio_crypt_decode_mac_bp(bp, mac);
440
441                 if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF) {
442                         /*
443                          * We haven't decompressed the data yet, but
444                          * zio_crypt_do_indirect_mac_checksum() requires
445                          * decompressed data to be able to parse out the MACs
446                          * from the indirect block. We decompress it now and
447                          * throw away the result after we are finished.
448                          */
449                         tmp = zio_buf_alloc(lsize);
450                         ret = zio_decompress_data(BP_GET_COMPRESS(bp),
451                             zio->io_abd, tmp, zio->io_size, lsize);
452                         if (ret != 0) {
453                                 ret = SET_ERROR(EIO);
454                                 goto error;
455                         }
456                         ret = zio_crypt_do_indirect_mac_checksum(B_FALSE,
457                             tmp, lsize, BP_SHOULD_BYTESWAP(bp), mac);
458                         zio_buf_free(tmp, lsize);
459                 } else {
460                         ret = zio_crypt_do_indirect_mac_checksum_abd(B_FALSE,
461                             zio->io_abd, size, BP_SHOULD_BYTESWAP(bp), mac);
462                 }
463                 abd_copy(data, zio->io_abd, size);
464
465                 if (zio_injection_enabled && ot != DMU_OT_DNODE && ret == 0) {
466                         ret = zio_handle_decrypt_injection(spa,
467                             &zio->io_bookmark, ot, ECKSUM);
468                 }
469                 if (ret != 0)
470                         goto error;
471
472                 return;
473         }
474
475         /*
476          * If this is an authenticated block, just check the MAC. It would be
477          * nice to separate this out into its own flag, but for the moment
478          * enum zio_flag is out of bits.
479          */
480         if (BP_IS_AUTHENTICATED(bp)) {
481                 if (ot == DMU_OT_OBJSET) {
482                         ret = spa_do_crypt_objset_mac_abd(B_FALSE, spa,
483                             dsobj, zio->io_abd, size, BP_SHOULD_BYTESWAP(bp));
484                 } else {
485                         zio_crypt_decode_mac_bp(bp, mac);
486                         ret = spa_do_crypt_mac_abd(B_FALSE, spa, dsobj,
487                             zio->io_abd, size, mac);
488                         if (zio_injection_enabled && ret == 0) {
489                                 ret = zio_handle_decrypt_injection(spa,
490                                     &zio->io_bookmark, ot, ECKSUM);
491                         }
492                 }
493                 abd_copy(data, zio->io_abd, size);
494
495                 if (ret != 0)
496                         goto error;
497
498                 return;
499         }
500
501         zio_crypt_decode_params_bp(bp, salt, iv);
502
503         if (ot == DMU_OT_INTENT_LOG) {
504                 tmp = abd_borrow_buf_copy(zio->io_abd, sizeof (zil_chain_t));
505                 zio_crypt_decode_mac_zil(tmp, mac);
506                 abd_return_buf(zio->io_abd, tmp, sizeof (zil_chain_t));
507         } else {
508                 zio_crypt_decode_mac_bp(bp, mac);
509         }
510
511         ret = spa_do_crypt_abd(B_FALSE, spa, &zio->io_bookmark, BP_GET_TYPE(bp),
512             BP_GET_DEDUP(bp), BP_SHOULD_BYTESWAP(bp), salt, iv, mac, size, data,
513             zio->io_abd, &no_crypt);
514         if (no_crypt)
515                 abd_copy(data, zio->io_abd, size);
516
517         if (ret != 0)
518                 goto error;
519
520         return;
521
522 error:
523         /* assert that the key was found unless this was speculative */
524         ASSERT(ret != EACCES || (zio->io_flags & ZIO_FLAG_SPECULATIVE));
525
526         /*
527          * If there was a decryption / authentication error return EIO as
528          * the io_error. If this was not a speculative zio, create an ereport.
529          */
530         if (ret == ECKSUM) {
531                 zio->io_error = SET_ERROR(EIO);
532                 if ((zio->io_flags & ZIO_FLAG_SPECULATIVE) == 0) {
533                         spa_log_error(spa, &zio->io_bookmark);
534                         zfs_ereport_post(FM_EREPORT_ZFS_AUTHENTICATION,
535                             spa, NULL, &zio->io_bookmark, zio, 0, 0);
536                 }
537         } else {
538                 zio->io_error = ret;
539         }
540 }
541
542 /*
543  * ==========================================================================
544  * I/O parent/child relationships and pipeline interlocks
545  * ==========================================================================
546  */
547 zio_t *
548 zio_walk_parents(zio_t *cio, zio_link_t **zl)
549 {
550         list_t *pl = &cio->io_parent_list;
551
552         *zl = (*zl == NULL) ? list_head(pl) : list_next(pl, *zl);
553         if (*zl == NULL)
554                 return (NULL);
555
556         ASSERT((*zl)->zl_child == cio);
557         return ((*zl)->zl_parent);
558 }
559
560 zio_t *
561 zio_walk_children(zio_t *pio, zio_link_t **zl)
562 {
563         list_t *cl = &pio->io_child_list;
564
565         ASSERT(MUTEX_HELD(&pio->io_lock));
566
567         *zl = (*zl == NULL) ? list_head(cl) : list_next(cl, *zl);
568         if (*zl == NULL)
569                 return (NULL);
570
571         ASSERT((*zl)->zl_parent == pio);
572         return ((*zl)->zl_child);
573 }
574
575 zio_t *
576 zio_unique_parent(zio_t *cio)
577 {
578         zio_link_t *zl = NULL;
579         zio_t *pio = zio_walk_parents(cio, &zl);
580
581         VERIFY3P(zio_walk_parents(cio, &zl), ==, NULL);
582         return (pio);
583 }
584
585 void
586 zio_add_child(zio_t *pio, zio_t *cio)
587 {
588         zio_link_t *zl = kmem_cache_alloc(zio_link_cache, KM_SLEEP);
589
590         /*
591          * Logical I/Os can have logical, gang, or vdev children.
592          * Gang I/Os can have gang or vdev children.
593          * Vdev I/Os can only have vdev children.
594          * The following ASSERT captures all of these constraints.
595          */
596         ASSERT3S(cio->io_child_type, <=, pio->io_child_type);
597
598         zl->zl_parent = pio;
599         zl->zl_child = cio;
600
601         mutex_enter(&pio->io_lock);
602         mutex_enter(&cio->io_lock);
603
604         ASSERT(pio->io_state[ZIO_WAIT_DONE] == 0);
605
606         for (int w = 0; w < ZIO_WAIT_TYPES; w++)
607                 pio->io_children[cio->io_child_type][w] += !cio->io_state[w];
608
609         list_insert_head(&pio->io_child_list, zl);
610         list_insert_head(&cio->io_parent_list, zl);
611
612         pio->io_child_count++;
613         cio->io_parent_count++;
614
615         mutex_exit(&cio->io_lock);
616         mutex_exit(&pio->io_lock);
617 }
618
619 static void
620 zio_remove_child(zio_t *pio, zio_t *cio, zio_link_t *zl)
621 {
622         ASSERT(zl->zl_parent == pio);
623         ASSERT(zl->zl_child == cio);
624
625         mutex_enter(&pio->io_lock);
626         mutex_enter(&cio->io_lock);
627
628         list_remove(&pio->io_child_list, zl);
629         list_remove(&cio->io_parent_list, zl);
630
631         pio->io_child_count--;
632         cio->io_parent_count--;
633
634         mutex_exit(&cio->io_lock);
635         mutex_exit(&pio->io_lock);
636         kmem_cache_free(zio_link_cache, zl);
637 }
638
639 static boolean_t
640 zio_wait_for_children(zio_t *zio, uint8_t childbits, enum zio_wait_type wait)
641 {
642         boolean_t waiting = B_FALSE;
643
644         mutex_enter(&zio->io_lock);
645         ASSERT(zio->io_stall == NULL);
646         for (int c = 0; c < ZIO_CHILD_TYPES; c++) {
647                 if (!(ZIO_CHILD_BIT_IS_SET(childbits, c)))
648                         continue;
649
650                 uint64_t *countp = &zio->io_children[c][wait];
651                 if (*countp != 0) {
652                         zio->io_stage >>= 1;
653                         ASSERT3U(zio->io_stage, !=, ZIO_STAGE_OPEN);
654                         zio->io_stall = countp;
655                         waiting = B_TRUE;
656                         break;
657                 }
658         }
659         mutex_exit(&zio->io_lock);
660         return (waiting);
661 }
662
663 __attribute__((always_inline))
664 static inline void
665 zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait,
666     zio_t **next_to_executep)
667 {
668         uint64_t *countp = &pio->io_children[zio->io_child_type][wait];
669         int *errorp = &pio->io_child_error[zio->io_child_type];
670
671         mutex_enter(&pio->io_lock);
672         if (zio->io_error && !(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE))
673                 *errorp = zio_worst_error(*errorp, zio->io_error);
674         pio->io_reexecute |= zio->io_reexecute;
675         ASSERT3U(*countp, >, 0);
676
677         (*countp)--;
678
679         if (*countp == 0 && pio->io_stall == countp) {
680                 zio_taskq_type_t type =
681                     pio->io_stage < ZIO_STAGE_VDEV_IO_START ? ZIO_TASKQ_ISSUE :
682                     ZIO_TASKQ_INTERRUPT;
683                 pio->io_stall = NULL;
684                 mutex_exit(&pio->io_lock);
685
686                 /*
687                  * If we can tell the caller to execute this parent next, do
688                  * so.  Otherwise dispatch the parent zio as its own task.
689                  *
690                  * Having the caller execute the parent when possible reduces
691                  * locking on the zio taskq's, reduces context switch
692                  * overhead, and has no recursion penalty.  Note that one
693                  * read from disk typically causes at least 3 zio's: a
694                  * zio_null(), the logical zio_read(), and then a physical
695                  * zio.  When the physical ZIO completes, we are able to call
696                  * zio_done() on all 3 of these zio's from one invocation of
697                  * zio_execute() by returning the parent back to
698                  * zio_execute().  Since the parent isn't executed until this
699                  * thread returns back to zio_execute(), the caller should do
700                  * so promptly.
701                  *
702                  * In other cases, dispatching the parent prevents
703                  * overflowing the stack when we have deeply nested
704                  * parent-child relationships, as we do with the "mega zio"
705                  * of writes for spa_sync(), and the chain of ZIL blocks.
706                  */
707                 if (next_to_executep != NULL && *next_to_executep == NULL) {
708                         *next_to_executep = pio;
709                 } else {
710                         zio_taskq_dispatch(pio, type, B_FALSE);
711                 }
712         } else {
713                 mutex_exit(&pio->io_lock);
714         }
715 }
716
717 static void
718 zio_inherit_child_errors(zio_t *zio, enum zio_child c)
719 {
720         if (zio->io_child_error[c] != 0 && zio->io_error == 0)
721                 zio->io_error = zio->io_child_error[c];
722 }
723
724 int
725 zio_bookmark_compare(const void *x1, const void *x2)
726 {
727         const zio_t *z1 = x1;
728         const zio_t *z2 = x2;
729
730         if (z1->io_bookmark.zb_objset < z2->io_bookmark.zb_objset)
731                 return (-1);
732         if (z1->io_bookmark.zb_objset > z2->io_bookmark.zb_objset)
733                 return (1);
734
735         if (z1->io_bookmark.zb_object < z2->io_bookmark.zb_object)
736                 return (-1);
737         if (z1->io_bookmark.zb_object > z2->io_bookmark.zb_object)
738                 return (1);
739
740         if (z1->io_bookmark.zb_level < z2->io_bookmark.zb_level)
741                 return (-1);
742         if (z1->io_bookmark.zb_level > z2->io_bookmark.zb_level)
743                 return (1);
744
745         if (z1->io_bookmark.zb_blkid < z2->io_bookmark.zb_blkid)
746                 return (-1);
747         if (z1->io_bookmark.zb_blkid > z2->io_bookmark.zb_blkid)
748                 return (1);
749
750         if (z1 < z2)
751                 return (-1);
752         if (z1 > z2)
753                 return (1);
754
755         return (0);
756 }
757
758 /*
759  * ==========================================================================
760  * Create the various types of I/O (read, write, free, etc)
761  * ==========================================================================
762  */
763 static zio_t *
764 zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
765     abd_t *data, uint64_t lsize, uint64_t psize, zio_done_func_t *done,
766     void *private, zio_type_t type, zio_priority_t priority,
767     enum zio_flag flags, vdev_t *vd, uint64_t offset,
768     const zbookmark_phys_t *zb, enum zio_stage stage,
769     enum zio_stage pipeline)
770 {
771         zio_t *zio;
772
773         IMPLY(type != ZIO_TYPE_TRIM, psize <= SPA_MAXBLOCKSIZE);
774         ASSERT(P2PHASE(psize, SPA_MINBLOCKSIZE) == 0);
775         ASSERT(P2PHASE(offset, SPA_MINBLOCKSIZE) == 0);
776
777         ASSERT(!vd || spa_config_held(spa, SCL_STATE_ALL, RW_READER));
778         ASSERT(!bp || !(flags & ZIO_FLAG_CONFIG_WRITER));
779         ASSERT(vd || stage == ZIO_STAGE_OPEN);
780
781         IMPLY(lsize != psize, (flags & ZIO_FLAG_RAW_COMPRESS) != 0);
782
783         zio = kmem_cache_alloc(zio_cache, KM_SLEEP);
784         bzero(zio, sizeof (zio_t));
785
786         mutex_init(&zio->io_lock, NULL, MUTEX_NOLOCKDEP, NULL);
787         cv_init(&zio->io_cv, NULL, CV_DEFAULT, NULL);
788
789         list_create(&zio->io_parent_list, sizeof (zio_link_t),
790             offsetof(zio_link_t, zl_parent_node));
791         list_create(&zio->io_child_list, sizeof (zio_link_t),
792             offsetof(zio_link_t, zl_child_node));
793         metaslab_trace_init(&zio->io_alloc_list);
794
795         if (vd != NULL)
796                 zio->io_child_type = ZIO_CHILD_VDEV;
797         else if (flags & ZIO_FLAG_GANG_CHILD)
798                 zio->io_child_type = ZIO_CHILD_GANG;
799         else if (flags & ZIO_FLAG_DDT_CHILD)
800                 zio->io_child_type = ZIO_CHILD_DDT;
801         else
802                 zio->io_child_type = ZIO_CHILD_LOGICAL;
803
804         if (bp != NULL) {
805                 zio->io_bp = (blkptr_t *)bp;
806                 zio->io_bp_copy = *bp;
807                 zio->io_bp_orig = *bp;
808                 if (type != ZIO_TYPE_WRITE ||
809                     zio->io_child_type == ZIO_CHILD_DDT)
810                         zio->io_bp = &zio->io_bp_copy;  /* so caller can free */
811                 if (zio->io_child_type == ZIO_CHILD_LOGICAL)
812                         zio->io_logical = zio;
813                 if (zio->io_child_type > ZIO_CHILD_GANG && BP_IS_GANG(bp))
814                         pipeline |= ZIO_GANG_STAGES;
815         }
816
817         zio->io_spa = spa;
818         zio->io_txg = txg;
819         zio->io_done = done;
820         zio->io_private = private;
821         zio->io_type = type;
822         zio->io_priority = priority;
823         zio->io_vd = vd;
824         zio->io_offset = offset;
825         zio->io_orig_abd = zio->io_abd = data;
826         zio->io_orig_size = zio->io_size = psize;
827         zio->io_lsize = lsize;
828         zio->io_orig_flags = zio->io_flags = flags;
829         zio->io_orig_stage = zio->io_stage = stage;
830         zio->io_orig_pipeline = zio->io_pipeline = pipeline;
831         zio->io_pipeline_trace = ZIO_STAGE_OPEN;
832
833         zio->io_state[ZIO_WAIT_READY] = (stage >= ZIO_STAGE_READY);
834         zio->io_state[ZIO_WAIT_DONE] = (stage >= ZIO_STAGE_DONE);
835
836         if (zb != NULL)
837                 zio->io_bookmark = *zb;
838
839         if (pio != NULL) {
840                 if (zio->io_metaslab_class == NULL)
841                         zio->io_metaslab_class = pio->io_metaslab_class;
842                 if (zio->io_logical == NULL)
843                         zio->io_logical = pio->io_logical;
844                 if (zio->io_child_type == ZIO_CHILD_GANG)
845                         zio->io_gang_leader = pio->io_gang_leader;
846                 zio_add_child(pio, zio);
847         }
848
849         taskq_init_ent(&zio->io_tqent);
850
851         return (zio);
852 }
853
854 static void
855 zio_destroy(zio_t *zio)
856 {
857         metaslab_trace_fini(&zio->io_alloc_list);
858         list_destroy(&zio->io_parent_list);
859         list_destroy(&zio->io_child_list);
860         mutex_destroy(&zio->io_lock);
861         cv_destroy(&zio->io_cv);
862         kmem_cache_free(zio_cache, zio);
863 }
864
865 zio_t *
866 zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done,
867     void *private, enum zio_flag flags)
868 {
869         zio_t *zio;
870
871         zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private,
872             ZIO_TYPE_NULL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL,
873             ZIO_STAGE_OPEN, ZIO_INTERLOCK_PIPELINE);
874
875         return (zio);
876 }
877
878 zio_t *
879 zio_root(spa_t *spa, zio_done_func_t *done, void *private, enum zio_flag flags)
880 {
881         return (zio_null(NULL, spa, NULL, done, private, flags));
882 }
883
884 void
885 zfs_blkptr_verify(spa_t *spa, const blkptr_t *bp)
886 {
887         if (!DMU_OT_IS_VALID(BP_GET_TYPE(bp))) {
888                 zfs_panic_recover("blkptr at %p has invalid TYPE %llu",
889                     bp, (longlong_t)BP_GET_TYPE(bp));
890         }
891         if (BP_GET_CHECKSUM(bp) >= ZIO_CHECKSUM_FUNCTIONS ||
892             BP_GET_CHECKSUM(bp) <= ZIO_CHECKSUM_ON) {
893                 zfs_panic_recover("blkptr at %p has invalid CHECKSUM %llu",
894                     bp, (longlong_t)BP_GET_CHECKSUM(bp));
895         }
896         if (BP_GET_COMPRESS(bp) >= ZIO_COMPRESS_FUNCTIONS ||
897             BP_GET_COMPRESS(bp) <= ZIO_COMPRESS_ON) {
898                 zfs_panic_recover("blkptr at %p has invalid COMPRESS %llu",
899                     bp, (longlong_t)BP_GET_COMPRESS(bp));
900         }
901         if (BP_GET_LSIZE(bp) > SPA_MAXBLOCKSIZE) {
902                 zfs_panic_recover("blkptr at %p has invalid LSIZE %llu",
903                     bp, (longlong_t)BP_GET_LSIZE(bp));
904         }
905         if (BP_GET_PSIZE(bp) > SPA_MAXBLOCKSIZE) {
906                 zfs_panic_recover("blkptr at %p has invalid PSIZE %llu",
907                     bp, (longlong_t)BP_GET_PSIZE(bp));
908         }
909
910         if (BP_IS_EMBEDDED(bp)) {
911                 if (BPE_GET_ETYPE(bp) >= NUM_BP_EMBEDDED_TYPES) {
912                         zfs_panic_recover("blkptr at %p has invalid ETYPE %llu",
913                             bp, (longlong_t)BPE_GET_ETYPE(bp));
914                 }
915         }
916
917         /*
918          * Do not verify individual DVAs if the config is not trusted. This
919          * will be done once the zio is executed in vdev_mirror_map_alloc.
920          */
921         if (!spa->spa_trust_config)
922                 return;
923
924         /*
925          * Pool-specific checks.
926          *
927          * Note: it would be nice to verify that the blk_birth and
928          * BP_PHYSICAL_BIRTH() are not too large.  However, spa_freeze()
929          * allows the birth time of log blocks (and dmu_sync()-ed blocks
930          * that are in the log) to be arbitrarily large.
931          */
932         for (int i = 0; i < BP_GET_NDVAS(bp); i++) {
933                 uint64_t vdevid = DVA_GET_VDEV(&bp->blk_dva[i]);
934
935                 if (vdevid >= spa->spa_root_vdev->vdev_children) {
936                         zfs_panic_recover("blkptr at %p DVA %u has invalid "
937                             "VDEV %llu",
938                             bp, i, (longlong_t)vdevid);
939                         continue;
940                 }
941                 vdev_t *vd = spa->spa_root_vdev->vdev_child[vdevid];
942                 if (vd == NULL) {
943                         zfs_panic_recover("blkptr at %p DVA %u has invalid "
944                             "VDEV %llu",
945                             bp, i, (longlong_t)vdevid);
946                         continue;
947                 }
948                 if (vd->vdev_ops == &vdev_hole_ops) {
949                         zfs_panic_recover("blkptr at %p DVA %u has hole "
950                             "VDEV %llu",
951                             bp, i, (longlong_t)vdevid);
952                         continue;
953                 }
954                 if (vd->vdev_ops == &vdev_missing_ops) {
955                         /*
956                          * "missing" vdevs are valid during import, but we
957                          * don't have their detailed info (e.g. asize), so
958                          * we can't perform any more checks on them.
959                          */
960                         continue;
961                 }
962                 uint64_t offset = DVA_GET_OFFSET(&bp->blk_dva[i]);
963                 uint64_t asize = DVA_GET_ASIZE(&bp->blk_dva[i]);
964                 if (BP_IS_GANG(bp))
965                         asize = vdev_psize_to_asize(vd, SPA_GANGBLOCKSIZE);
966                 if (offset + asize > vd->vdev_asize) {
967                         zfs_panic_recover("blkptr at %p DVA %u has invalid "
968                             "OFFSET %llu",
969                             bp, i, (longlong_t)offset);
970                 }
971         }
972 }
973
974 boolean_t
975 zfs_dva_valid(spa_t *spa, const dva_t *dva, const blkptr_t *bp)
976 {
977         uint64_t vdevid = DVA_GET_VDEV(dva);
978
979         if (vdevid >= spa->spa_root_vdev->vdev_children)
980                 return (B_FALSE);
981
982         vdev_t *vd = spa->spa_root_vdev->vdev_child[vdevid];
983         if (vd == NULL)
984                 return (B_FALSE);
985
986         if (vd->vdev_ops == &vdev_hole_ops)
987                 return (B_FALSE);
988
989         if (vd->vdev_ops == &vdev_missing_ops) {
990                 return (B_FALSE);
991         }
992
993         uint64_t offset = DVA_GET_OFFSET(dva);
994         uint64_t asize = DVA_GET_ASIZE(dva);
995
996         if (BP_IS_GANG(bp))
997                 asize = vdev_psize_to_asize(vd, SPA_GANGBLOCKSIZE);
998         if (offset + asize > vd->vdev_asize)
999                 return (B_FALSE);
1000
1001         return (B_TRUE);
1002 }
1003
1004 zio_t *
1005 zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp,
1006     abd_t *data, uint64_t size, zio_done_func_t *done, void *private,
1007     zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb)
1008 {
1009         zio_t *zio;
1010
1011         zfs_blkptr_verify(spa, bp);
1012
1013         zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp,
1014             data, size, size, done, private,
1015             ZIO_TYPE_READ, priority, flags, NULL, 0, zb,
1016             ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ?
1017             ZIO_DDT_CHILD_READ_PIPELINE : ZIO_READ_PIPELINE);
1018
1019         return (zio);
1020 }
1021
1022 zio_t *
1023 zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
1024     abd_t *data, uint64_t lsize, uint64_t psize, const zio_prop_t *zp,
1025     zio_done_func_t *ready, zio_done_func_t *children_ready,
1026     zio_done_func_t *physdone, zio_done_func_t *done,
1027     void *private, zio_priority_t priority, enum zio_flag flags,
1028     const zbookmark_phys_t *zb)
1029 {
1030         zio_t *zio;
1031
1032         ASSERT(zp->zp_checksum >= ZIO_CHECKSUM_OFF &&
1033             zp->zp_checksum < ZIO_CHECKSUM_FUNCTIONS &&
1034             zp->zp_compress >= ZIO_COMPRESS_OFF &&
1035             zp->zp_compress < ZIO_COMPRESS_FUNCTIONS &&
1036             DMU_OT_IS_VALID(zp->zp_type) &&
1037             zp->zp_level < 32 &&
1038             zp->zp_copies > 0 &&
1039             zp->zp_copies <= spa_max_replication(spa));
1040
1041         zio = zio_create(pio, spa, txg, bp, data, lsize, psize, done, private,
1042             ZIO_TYPE_WRITE, priority, flags, NULL, 0, zb,
1043             ZIO_STAGE_OPEN, (flags & ZIO_FLAG_DDT_CHILD) ?
1044             ZIO_DDT_CHILD_WRITE_PIPELINE : ZIO_WRITE_PIPELINE);
1045
1046         zio->io_ready = ready;
1047         zio->io_children_ready = children_ready;
1048         zio->io_physdone = physdone;
1049         zio->io_prop = *zp;
1050
1051         /*
1052          * Data can be NULL if we are going to call zio_write_override() to
1053          * provide the already-allocated BP.  But we may need the data to
1054          * verify a dedup hit (if requested).  In this case, don't try to
1055          * dedup (just take the already-allocated BP verbatim). Encrypted
1056          * dedup blocks need data as well so we also disable dedup in this
1057          * case.
1058          */
1059         if (data == NULL &&
1060             (zio->io_prop.zp_dedup_verify || zio->io_prop.zp_encrypt)) {
1061                 zio->io_prop.zp_dedup = zio->io_prop.zp_dedup_verify = B_FALSE;
1062         }
1063
1064         return (zio);
1065 }
1066
1067 zio_t *
1068 zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, abd_t *data,
1069     uint64_t size, zio_done_func_t *done, void *private,
1070     zio_priority_t priority, enum zio_flag flags, zbookmark_phys_t *zb)
1071 {
1072         zio_t *zio;
1073
1074         zio = zio_create(pio, spa, txg, bp, data, size, size, done, private,
1075             ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_IO_REWRITE, NULL, 0, zb,
1076             ZIO_STAGE_OPEN, ZIO_REWRITE_PIPELINE);
1077
1078         return (zio);
1079 }
1080
1081 void
1082 zio_write_override(zio_t *zio, blkptr_t *bp, int copies, boolean_t nopwrite)
1083 {
1084         ASSERT(zio->io_type == ZIO_TYPE_WRITE);
1085         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1086         ASSERT(zio->io_stage == ZIO_STAGE_OPEN);
1087         ASSERT(zio->io_txg == spa_syncing_txg(zio->io_spa));
1088
1089         /*
1090          * We must reset the io_prop to match the values that existed
1091          * when the bp was first written by dmu_sync() keeping in mind
1092          * that nopwrite and dedup are mutually exclusive.
1093          */
1094         zio->io_prop.zp_dedup = nopwrite ? B_FALSE : zio->io_prop.zp_dedup;
1095         zio->io_prop.zp_nopwrite = nopwrite;
1096         zio->io_prop.zp_copies = copies;
1097         zio->io_bp_override = bp;
1098 }
1099
1100 void
1101 zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp)
1102 {
1103
1104         zfs_blkptr_verify(spa, bp);
1105
1106         /*
1107          * The check for EMBEDDED is a performance optimization.  We
1108          * process the free here (by ignoring it) rather than
1109          * putting it on the list and then processing it in zio_free_sync().
1110          */
1111         if (BP_IS_EMBEDDED(bp))
1112                 return;
1113         metaslab_check_free(spa, bp);
1114
1115         /*
1116          * Frees that are for the currently-syncing txg, are not going to be
1117          * deferred, and which will not need to do a read (i.e. not GANG or
1118          * DEDUP), can be processed immediately.  Otherwise, put them on the
1119          * in-memory list for later processing.
1120          *
1121          * Note that we only defer frees after zfs_sync_pass_deferred_free
1122          * when the log space map feature is disabled. [see relevant comment
1123          * in spa_sync_iterate_to_convergence()]
1124          */
1125         if (BP_IS_GANG(bp) ||
1126             BP_GET_DEDUP(bp) ||
1127             txg != spa->spa_syncing_txg ||
1128             (spa_sync_pass(spa) >= zfs_sync_pass_deferred_free &&
1129             !spa_feature_is_active(spa, SPA_FEATURE_LOG_SPACEMAP))) {
1130                 bplist_append(&spa->spa_free_bplist[txg & TXG_MASK], bp);
1131         } else {
1132                 VERIFY0(zio_wait(zio_free_sync(NULL, spa, txg, bp, 0)));
1133         }
1134 }
1135
1136 zio_t *
1137 zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
1138     enum zio_flag flags)
1139 {
1140         zio_t *zio;
1141         enum zio_stage stage = ZIO_FREE_PIPELINE;
1142
1143         ASSERT(!BP_IS_HOLE(bp));
1144         ASSERT(spa_syncing_txg(spa) == txg);
1145
1146         if (BP_IS_EMBEDDED(bp))
1147                 return (zio_null(pio, spa, NULL, NULL, NULL, 0));
1148
1149         metaslab_check_free(spa, bp);
1150         arc_freed(spa, bp);
1151         dsl_scan_freed(spa, bp);
1152
1153         /*
1154          * GANG and DEDUP blocks can induce a read (for the gang block header,
1155          * or the DDT), so issue them asynchronously so that this thread is
1156          * not tied up.
1157          */
1158         if (BP_IS_GANG(bp) || BP_GET_DEDUP(bp))
1159                 stage |= ZIO_STAGE_ISSUE_ASYNC;
1160
1161         zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp),
1162             BP_GET_PSIZE(bp), NULL, NULL, ZIO_TYPE_FREE, ZIO_PRIORITY_NOW,
1163             flags, NULL, 0, NULL, ZIO_STAGE_OPEN, stage);
1164
1165         return (zio);
1166 }
1167
1168 zio_t *
1169 zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp,
1170     zio_done_func_t *done, void *private, enum zio_flag flags)
1171 {
1172         zio_t *zio;
1173
1174         zfs_blkptr_verify(spa, bp);
1175
1176         if (BP_IS_EMBEDDED(bp))
1177                 return (zio_null(pio, spa, NULL, NULL, NULL, 0));
1178
1179         /*
1180          * A claim is an allocation of a specific block.  Claims are needed
1181          * to support immediate writes in the intent log.  The issue is that
1182          * immediate writes contain committed data, but in a txg that was
1183          * *not* committed.  Upon opening the pool after an unclean shutdown,
1184          * the intent log claims all blocks that contain immediate write data
1185          * so that the SPA knows they're in use.
1186          *
1187          * All claims *must* be resolved in the first txg -- before the SPA
1188          * starts allocating blocks -- so that nothing is allocated twice.
1189          * If txg == 0 we just verify that the block is claimable.
1190          */
1191         ASSERT3U(spa->spa_uberblock.ub_rootbp.blk_birth, <,
1192             spa_min_claim_txg(spa));
1193         ASSERT(txg == spa_min_claim_txg(spa) || txg == 0);
1194         ASSERT(!BP_GET_DEDUP(bp) || !spa_writeable(spa));       /* zdb(1M) */
1195
1196         zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp),
1197             BP_GET_PSIZE(bp), done, private, ZIO_TYPE_CLAIM, ZIO_PRIORITY_NOW,
1198             flags, NULL, 0, NULL, ZIO_STAGE_OPEN, ZIO_CLAIM_PIPELINE);
1199         ASSERT0(zio->io_queued_timestamp);
1200
1201         return (zio);
1202 }
1203
1204 zio_t *
1205 zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
1206     zio_done_func_t *done, void *private, enum zio_flag flags)
1207 {
1208         zio_t *zio;
1209         int c;
1210
1211         if (vd->vdev_children == 0) {
1212                 zio = zio_create(pio, spa, 0, NULL, NULL, 0, 0, done, private,
1213                     ZIO_TYPE_IOCTL, ZIO_PRIORITY_NOW, flags, vd, 0, NULL,
1214                     ZIO_STAGE_OPEN, ZIO_IOCTL_PIPELINE);
1215
1216                 zio->io_cmd = cmd;
1217         } else {
1218                 zio = zio_null(pio, spa, NULL, NULL, NULL, flags);
1219
1220                 for (c = 0; c < vd->vdev_children; c++)
1221                         zio_nowait(zio_ioctl(zio, spa, vd->vdev_child[c], cmd,
1222                             done, private, flags));
1223         }
1224
1225         return (zio);
1226 }
1227
1228 zio_t *
1229 zio_trim(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
1230     zio_done_func_t *done, void *private, zio_priority_t priority,
1231     enum zio_flag flags, enum trim_flag trim_flags)
1232 {
1233         zio_t *zio;
1234
1235         ASSERT0(vd->vdev_children);
1236         ASSERT0(P2PHASE(offset, 1ULL << vd->vdev_ashift));
1237         ASSERT0(P2PHASE(size, 1ULL << vd->vdev_ashift));
1238         ASSERT3U(size, !=, 0);
1239
1240         zio = zio_create(pio, vd->vdev_spa, 0, NULL, NULL, size, size, done,
1241             private, ZIO_TYPE_TRIM, priority, flags | ZIO_FLAG_PHYSICAL,
1242             vd, offset, NULL, ZIO_STAGE_OPEN, ZIO_TRIM_PIPELINE);
1243         zio->io_trim_flags = trim_flags;
1244
1245         return (zio);
1246 }
1247
1248 zio_t *
1249 zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
1250     abd_t *data, int checksum, zio_done_func_t *done, void *private,
1251     zio_priority_t priority, enum zio_flag flags, boolean_t labels)
1252 {
1253         zio_t *zio;
1254
1255         ASSERT(vd->vdev_children == 0);
1256         ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE ||
1257             offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE);
1258         ASSERT3U(offset + size, <=, vd->vdev_psize);
1259
1260         zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, size, done,
1261             private, ZIO_TYPE_READ, priority, flags | ZIO_FLAG_PHYSICAL, vd,
1262             offset, NULL, ZIO_STAGE_OPEN, ZIO_READ_PHYS_PIPELINE);
1263
1264         zio->io_prop.zp_checksum = checksum;
1265
1266         return (zio);
1267 }
1268
1269 zio_t *
1270 zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size,
1271     abd_t *data, int checksum, zio_done_func_t *done, void *private,
1272     zio_priority_t priority, enum zio_flag flags, boolean_t labels)
1273 {
1274         zio_t *zio;
1275
1276         ASSERT(vd->vdev_children == 0);
1277         ASSERT(!labels || offset + size <= VDEV_LABEL_START_SIZE ||
1278             offset >= vd->vdev_psize - VDEV_LABEL_END_SIZE);
1279         ASSERT3U(offset + size, <=, vd->vdev_psize);
1280
1281         zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, size, done,
1282             private, ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_PHYSICAL, vd,
1283             offset, NULL, ZIO_STAGE_OPEN, ZIO_WRITE_PHYS_PIPELINE);
1284
1285         zio->io_prop.zp_checksum = checksum;
1286
1287         if (zio_checksum_table[checksum].ci_flags & ZCHECKSUM_FLAG_EMBEDDED) {
1288                 /*
1289                  * zec checksums are necessarily destructive -- they modify
1290                  * the end of the write buffer to hold the verifier/checksum.
1291                  * Therefore, we must make a local copy in case the data is
1292                  * being written to multiple places in parallel.
1293                  */
1294                 abd_t *wbuf = abd_alloc_sametype(data, size);
1295                 abd_copy(wbuf, data, size);
1296
1297                 zio_push_transform(zio, wbuf, size, size, NULL);
1298         }
1299
1300         return (zio);
1301 }
1302
1303 /*
1304  * Create a child I/O to do some work for us.
1305  */
1306 zio_t *
1307 zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset,
1308     abd_t *data, uint64_t size, int type, zio_priority_t priority,
1309     enum zio_flag flags, zio_done_func_t *done, void *private)
1310 {
1311         enum zio_stage pipeline = ZIO_VDEV_CHILD_PIPELINE;
1312         zio_t *zio;
1313
1314         /*
1315          * vdev child I/Os do not propagate their error to the parent.
1316          * Therefore, for correct operation the caller *must* check for
1317          * and handle the error in the child i/o's done callback.
1318          * The only exceptions are i/os that we don't care about
1319          * (OPTIONAL or REPAIR).
1320          */
1321         ASSERT((flags & ZIO_FLAG_OPTIONAL) || (flags & ZIO_FLAG_IO_REPAIR) ||
1322             done != NULL);
1323
1324         if (type == ZIO_TYPE_READ && bp != NULL) {
1325                 /*
1326                  * If we have the bp, then the child should perform the
1327                  * checksum and the parent need not.  This pushes error
1328                  * detection as close to the leaves as possible and
1329                  * eliminates redundant checksums in the interior nodes.
1330                  */
1331                 pipeline |= ZIO_STAGE_CHECKSUM_VERIFY;
1332                 pio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY;
1333         }
1334
1335         if (vd->vdev_ops->vdev_op_leaf) {
1336                 ASSERT0(vd->vdev_children);
1337                 offset += VDEV_LABEL_START_SIZE;
1338         }
1339
1340         flags |= ZIO_VDEV_CHILD_FLAGS(pio);
1341
1342         /*
1343          * If we've decided to do a repair, the write is not speculative --
1344          * even if the original read was.
1345          */
1346         if (flags & ZIO_FLAG_IO_REPAIR)
1347                 flags &= ~ZIO_FLAG_SPECULATIVE;
1348
1349         /*
1350          * If we're creating a child I/O that is not associated with a
1351          * top-level vdev, then the child zio is not an allocating I/O.
1352          * If this is a retried I/O then we ignore it since we will
1353          * have already processed the original allocating I/O.
1354          */
1355         if (flags & ZIO_FLAG_IO_ALLOCATING &&
1356             (vd != vd->vdev_top || (flags & ZIO_FLAG_IO_RETRY))) {
1357                 ASSERT(pio->io_metaslab_class != NULL);
1358                 ASSERT(pio->io_metaslab_class->mc_alloc_throttle_enabled);
1359                 ASSERT(type == ZIO_TYPE_WRITE);
1360                 ASSERT(priority == ZIO_PRIORITY_ASYNC_WRITE);
1361                 ASSERT(!(flags & ZIO_FLAG_IO_REPAIR));
1362                 ASSERT(!(pio->io_flags & ZIO_FLAG_IO_REWRITE) ||
1363                     pio->io_child_type == ZIO_CHILD_GANG);
1364
1365                 flags &= ~ZIO_FLAG_IO_ALLOCATING;
1366         }
1367
1368
1369         zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, size,
1370             done, private, type, priority, flags, vd, offset, &pio->io_bookmark,
1371             ZIO_STAGE_VDEV_IO_START >> 1, pipeline);
1372         ASSERT3U(zio->io_child_type, ==, ZIO_CHILD_VDEV);
1373
1374         zio->io_physdone = pio->io_physdone;
1375         if (vd->vdev_ops->vdev_op_leaf && zio->io_logical != NULL)
1376                 zio->io_logical->io_phys_children++;
1377
1378         return (zio);
1379 }
1380
1381 zio_t *
1382 zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, abd_t *data, uint64_t size,
1383     zio_type_t type, zio_priority_t priority, enum zio_flag flags,
1384     zio_done_func_t *done, void *private)
1385 {
1386         zio_t *zio;
1387
1388         ASSERT(vd->vdev_ops->vdev_op_leaf);
1389
1390         zio = zio_create(NULL, vd->vdev_spa, 0, NULL,
1391             data, size, size, done, private, type, priority,
1392             flags | ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_RETRY | ZIO_FLAG_DELEGATED,
1393             vd, offset, NULL,
1394             ZIO_STAGE_VDEV_IO_START >> 1, ZIO_VDEV_CHILD_PIPELINE);
1395
1396         return (zio);
1397 }
1398
1399 void
1400 zio_flush(zio_t *zio, vdev_t *vd)
1401 {
1402         zio_nowait(zio_ioctl(zio, zio->io_spa, vd, DKIOCFLUSHWRITECACHE,
1403             NULL, NULL,
1404             ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_DONT_RETRY));
1405 }
1406
1407 void
1408 zio_shrink(zio_t *zio, uint64_t size)
1409 {
1410         ASSERT3P(zio->io_executor, ==, NULL);
1411         ASSERT3U(zio->io_orig_size, ==, zio->io_size);
1412         ASSERT3U(size, <=, zio->io_size);
1413
1414         /*
1415          * We don't shrink for raidz because of problems with the
1416          * reconstruction when reading back less than the block size.
1417          * Note, BP_IS_RAIDZ() assumes no compression.
1418          */
1419         ASSERT(BP_GET_COMPRESS(zio->io_bp) == ZIO_COMPRESS_OFF);
1420         if (!BP_IS_RAIDZ(zio->io_bp)) {
1421                 /* we are not doing a raw write */
1422                 ASSERT3U(zio->io_size, ==, zio->io_lsize);
1423                 zio->io_orig_size = zio->io_size = zio->io_lsize = size;
1424         }
1425 }
1426
1427 /*
1428  * ==========================================================================
1429  * Prepare to read and write logical blocks
1430  * ==========================================================================
1431  */
1432
1433 static zio_t *
1434 zio_read_bp_init(zio_t *zio)
1435 {
1436         blkptr_t *bp = zio->io_bp;
1437         uint64_t psize =
1438             BP_IS_EMBEDDED(bp) ? BPE_GET_PSIZE(bp) : BP_GET_PSIZE(bp);
1439
1440         ASSERT3P(zio->io_bp, ==, &zio->io_bp_copy);
1441
1442         if (BP_GET_COMPRESS(bp) != ZIO_COMPRESS_OFF &&
1443             zio->io_child_type == ZIO_CHILD_LOGICAL &&
1444             !(zio->io_flags & ZIO_FLAG_RAW_COMPRESS)) {
1445                 zio_push_transform(zio, abd_alloc_sametype(zio->io_abd, psize),
1446                     psize, psize, zio_decompress);
1447         }
1448
1449         if (((BP_IS_PROTECTED(bp) && !(zio->io_flags & ZIO_FLAG_RAW_ENCRYPT)) ||
1450             BP_HAS_INDIRECT_MAC_CKSUM(bp)) &&
1451             zio->io_child_type == ZIO_CHILD_LOGICAL) {
1452                 zio_push_transform(zio, abd_alloc_sametype(zio->io_abd, psize),
1453                     psize, psize, zio_decrypt);
1454         }
1455
1456         if (BP_IS_EMBEDDED(bp) && BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA) {
1457                 int psize = BPE_GET_PSIZE(bp);
1458                 void *data = abd_borrow_buf(zio->io_abd, psize);
1459
1460                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1461                 decode_embedded_bp_compressed(bp, data);
1462                 abd_return_buf_copy(zio->io_abd, data, psize);
1463         } else {
1464                 ASSERT(!BP_IS_EMBEDDED(bp));
1465                 ASSERT3P(zio->io_bp, ==, &zio->io_bp_copy);
1466         }
1467
1468         if (!DMU_OT_IS_METADATA(BP_GET_TYPE(bp)) && BP_GET_LEVEL(bp) == 0)
1469                 zio->io_flags |= ZIO_FLAG_DONT_CACHE;
1470
1471         if (BP_GET_TYPE(bp) == DMU_OT_DDT_ZAP)
1472                 zio->io_flags |= ZIO_FLAG_DONT_CACHE;
1473
1474         if (BP_GET_DEDUP(bp) && zio->io_child_type == ZIO_CHILD_LOGICAL)
1475                 zio->io_pipeline = ZIO_DDT_READ_PIPELINE;
1476
1477         return (zio);
1478 }
1479
1480 static zio_t *
1481 zio_write_bp_init(zio_t *zio)
1482 {
1483         if (!IO_IS_ALLOCATING(zio))
1484                 return (zio);
1485
1486         ASSERT(zio->io_child_type != ZIO_CHILD_DDT);
1487
1488         if (zio->io_bp_override) {
1489                 blkptr_t *bp = zio->io_bp;
1490                 zio_prop_t *zp = &zio->io_prop;
1491
1492                 ASSERT(bp->blk_birth != zio->io_txg);
1493                 ASSERT(BP_GET_DEDUP(zio->io_bp_override) == 0);
1494
1495                 *bp = *zio->io_bp_override;
1496                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1497
1498                 if (BP_IS_EMBEDDED(bp))
1499                         return (zio);
1500
1501                 /*
1502                  * If we've been overridden and nopwrite is set then
1503                  * set the flag accordingly to indicate that a nopwrite
1504                  * has already occurred.
1505                  */
1506                 if (!BP_IS_HOLE(bp) && zp->zp_nopwrite) {
1507                         ASSERT(!zp->zp_dedup);
1508                         ASSERT3U(BP_GET_CHECKSUM(bp), ==, zp->zp_checksum);
1509                         zio->io_flags |= ZIO_FLAG_NOPWRITE;
1510                         return (zio);
1511                 }
1512
1513                 ASSERT(!zp->zp_nopwrite);
1514
1515                 if (BP_IS_HOLE(bp) || !zp->zp_dedup)
1516                         return (zio);
1517
1518                 ASSERT((zio_checksum_table[zp->zp_checksum].ci_flags &
1519                     ZCHECKSUM_FLAG_DEDUP) || zp->zp_dedup_verify);
1520
1521                 if (BP_GET_CHECKSUM(bp) == zp->zp_checksum &&
1522                     !zp->zp_encrypt) {
1523                         BP_SET_DEDUP(bp, 1);
1524                         zio->io_pipeline |= ZIO_STAGE_DDT_WRITE;
1525                         return (zio);
1526                 }
1527
1528                 /*
1529                  * We were unable to handle this as an override bp, treat
1530                  * it as a regular write I/O.
1531                  */
1532                 zio->io_bp_override = NULL;
1533                 *bp = zio->io_bp_orig;
1534                 zio->io_pipeline = zio->io_orig_pipeline;
1535         }
1536
1537         return (zio);
1538 }
1539
1540 static zio_t *
1541 zio_write_compress(zio_t *zio)
1542 {
1543         spa_t *spa = zio->io_spa;
1544         zio_prop_t *zp = &zio->io_prop;
1545         enum zio_compress compress = zp->zp_compress;
1546         blkptr_t *bp = zio->io_bp;
1547         uint64_t lsize = zio->io_lsize;
1548         uint64_t psize = zio->io_size;
1549         int pass = 1;
1550
1551         /*
1552          * If our children haven't all reached the ready stage,
1553          * wait for them and then repeat this pipeline stage.
1554          */
1555         if (zio_wait_for_children(zio, ZIO_CHILD_LOGICAL_BIT |
1556             ZIO_CHILD_GANG_BIT, ZIO_WAIT_READY)) {
1557                 return (NULL);
1558         }
1559
1560         if (!IO_IS_ALLOCATING(zio))
1561                 return (zio);
1562
1563         if (zio->io_children_ready != NULL) {
1564                 /*
1565                  * Now that all our children are ready, run the callback
1566                  * associated with this zio in case it wants to modify the
1567                  * data to be written.
1568                  */
1569                 ASSERT3U(zp->zp_level, >, 0);
1570                 zio->io_children_ready(zio);
1571         }
1572
1573         ASSERT(zio->io_child_type != ZIO_CHILD_DDT);
1574         ASSERT(zio->io_bp_override == NULL);
1575
1576         if (!BP_IS_HOLE(bp) && bp->blk_birth == zio->io_txg) {
1577                 /*
1578                  * We're rewriting an existing block, which means we're
1579                  * working on behalf of spa_sync().  For spa_sync() to
1580                  * converge, it must eventually be the case that we don't
1581                  * have to allocate new blocks.  But compression changes
1582                  * the blocksize, which forces a reallocate, and makes
1583                  * convergence take longer.  Therefore, after the first
1584                  * few passes, stop compressing to ensure convergence.
1585                  */
1586                 pass = spa_sync_pass(spa);
1587
1588                 ASSERT(zio->io_txg == spa_syncing_txg(spa));
1589                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1590                 ASSERT(!BP_GET_DEDUP(bp));
1591
1592                 if (pass >= zfs_sync_pass_dont_compress)
1593                         compress = ZIO_COMPRESS_OFF;
1594
1595                 /* Make sure someone doesn't change their mind on overwrites */
1596                 ASSERT(BP_IS_EMBEDDED(bp) || MIN(zp->zp_copies + BP_IS_GANG(bp),
1597                     spa_max_replication(spa)) == BP_GET_NDVAS(bp));
1598         }
1599
1600         /* If it's a compressed write that is not raw, compress the buffer. */
1601         if (compress != ZIO_COMPRESS_OFF &&
1602             !(zio->io_flags & ZIO_FLAG_RAW_COMPRESS)) {
1603                 void *cbuf = zio_buf_alloc(lsize);
1604                 psize = zio_compress_data(compress, zio->io_abd, cbuf, lsize);
1605                 if (psize == 0 || psize == lsize) {
1606                         compress = ZIO_COMPRESS_OFF;
1607                         zio_buf_free(cbuf, lsize);
1608                 } else if (!zp->zp_dedup && !zp->zp_encrypt &&
1609                     psize <= BPE_PAYLOAD_SIZE &&
1610                     zp->zp_level == 0 && !DMU_OT_HAS_FILL(zp->zp_type) &&
1611                     spa_feature_is_enabled(spa, SPA_FEATURE_EMBEDDED_DATA)) {
1612                         encode_embedded_bp_compressed(bp,
1613                             cbuf, compress, lsize, psize);
1614                         BPE_SET_ETYPE(bp, BP_EMBEDDED_TYPE_DATA);
1615                         BP_SET_TYPE(bp, zio->io_prop.zp_type);
1616                         BP_SET_LEVEL(bp, zio->io_prop.zp_level);
1617                         zio_buf_free(cbuf, lsize);
1618                         bp->blk_birth = zio->io_txg;
1619                         zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1620                         ASSERT(spa_feature_is_active(spa,
1621                             SPA_FEATURE_EMBEDDED_DATA));
1622                         return (zio);
1623                 } else {
1624                         /*
1625                          * Round up compressed size up to the ashift
1626                          * of the smallest-ashift device, and zero the tail.
1627                          * This ensures that the compressed size of the BP
1628                          * (and thus compressratio property) are correct,
1629                          * in that we charge for the padding used to fill out
1630                          * the last sector.
1631                          */
1632                         ASSERT3U(spa->spa_min_ashift, >=, SPA_MINBLOCKSHIFT);
1633                         size_t rounded = (size_t)P2ROUNDUP(psize,
1634                             1ULL << spa->spa_min_ashift);
1635                         if (rounded >= lsize) {
1636                                 compress = ZIO_COMPRESS_OFF;
1637                                 zio_buf_free(cbuf, lsize);
1638                                 psize = lsize;
1639                         } else {
1640                                 abd_t *cdata = abd_get_from_buf(cbuf, lsize);
1641                                 abd_take_ownership_of_buf(cdata, B_TRUE);
1642                                 abd_zero_off(cdata, psize, rounded - psize);
1643                                 psize = rounded;
1644                                 zio_push_transform(zio, cdata,
1645                                     psize, lsize, NULL);
1646                         }
1647                 }
1648
1649                 /*
1650                  * We were unable to handle this as an override bp, treat
1651                  * it as a regular write I/O.
1652                  */
1653                 zio->io_bp_override = NULL;
1654                 *bp = zio->io_bp_orig;
1655                 zio->io_pipeline = zio->io_orig_pipeline;
1656
1657         } else if ((zio->io_flags & ZIO_FLAG_RAW_ENCRYPT) != 0 &&
1658             zp->zp_type == DMU_OT_DNODE) {
1659                 /*
1660                  * The DMU actually relies on the zio layer's compression
1661                  * to free metadnode blocks that have had all contained
1662                  * dnodes freed. As a result, even when doing a raw
1663                  * receive, we must check whether the block can be compressed
1664                  * to a hole.
1665                  */
1666                 psize = zio_compress_data(ZIO_COMPRESS_EMPTY,
1667                     zio->io_abd, NULL, lsize);
1668                 if (psize == 0)
1669                         compress = ZIO_COMPRESS_OFF;
1670         } else {
1671                 ASSERT3U(psize, !=, 0);
1672         }
1673
1674         /*
1675          * The final pass of spa_sync() must be all rewrites, but the first
1676          * few passes offer a trade-off: allocating blocks defers convergence,
1677          * but newly allocated blocks are sequential, so they can be written
1678          * to disk faster.  Therefore, we allow the first few passes of
1679          * spa_sync() to allocate new blocks, but force rewrites after that.
1680          * There should only be a handful of blocks after pass 1 in any case.
1681          */
1682         if (!BP_IS_HOLE(bp) && bp->blk_birth == zio->io_txg &&
1683             BP_GET_PSIZE(bp) == psize &&
1684             pass >= zfs_sync_pass_rewrite) {
1685                 VERIFY3U(psize, !=, 0);
1686                 enum zio_stage gang_stages = zio->io_pipeline & ZIO_GANG_STAGES;
1687
1688                 zio->io_pipeline = ZIO_REWRITE_PIPELINE | gang_stages;
1689                 zio->io_flags |= ZIO_FLAG_IO_REWRITE;
1690         } else {
1691                 BP_ZERO(bp);
1692                 zio->io_pipeline = ZIO_WRITE_PIPELINE;
1693         }
1694
1695         if (psize == 0) {
1696                 if (zio->io_bp_orig.blk_birth != 0 &&
1697                     spa_feature_is_active(spa, SPA_FEATURE_HOLE_BIRTH)) {
1698                         BP_SET_LSIZE(bp, lsize);
1699                         BP_SET_TYPE(bp, zp->zp_type);
1700                         BP_SET_LEVEL(bp, zp->zp_level);
1701                         BP_SET_BIRTH(bp, zio->io_txg, 0);
1702                 }
1703                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
1704         } else {
1705                 ASSERT(zp->zp_checksum != ZIO_CHECKSUM_GANG_HEADER);
1706                 BP_SET_LSIZE(bp, lsize);
1707                 BP_SET_TYPE(bp, zp->zp_type);
1708                 BP_SET_LEVEL(bp, zp->zp_level);
1709                 BP_SET_PSIZE(bp, psize);
1710                 BP_SET_COMPRESS(bp, compress);
1711                 BP_SET_CHECKSUM(bp, zp->zp_checksum);
1712                 BP_SET_DEDUP(bp, zp->zp_dedup);
1713                 BP_SET_BYTEORDER(bp, ZFS_HOST_BYTEORDER);
1714                 if (zp->zp_dedup) {
1715                         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1716                         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE));
1717                         ASSERT(!zp->zp_encrypt ||
1718                             DMU_OT_IS_ENCRYPTED(zp->zp_type));
1719                         zio->io_pipeline = ZIO_DDT_WRITE_PIPELINE;
1720                 }
1721                 if (zp->zp_nopwrite) {
1722                         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
1723                         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE));
1724                         zio->io_pipeline |= ZIO_STAGE_NOP_WRITE;
1725                 }
1726         }
1727         return (zio);
1728 }
1729
1730 static zio_t *
1731 zio_free_bp_init(zio_t *zio)
1732 {
1733         blkptr_t *bp = zio->io_bp;
1734
1735         if (zio->io_child_type == ZIO_CHILD_LOGICAL) {
1736                 if (BP_GET_DEDUP(bp))
1737                         zio->io_pipeline = ZIO_DDT_FREE_PIPELINE;
1738         }
1739
1740         ASSERT3P(zio->io_bp, ==, &zio->io_bp_copy);
1741
1742         return (zio);
1743 }
1744
1745 /*
1746  * ==========================================================================
1747  * Execute the I/O pipeline
1748  * ==========================================================================
1749  */
1750
1751 static void
1752 zio_taskq_dispatch(zio_t *zio, zio_taskq_type_t q, boolean_t cutinline)
1753 {
1754         spa_t *spa = zio->io_spa;
1755         zio_type_t t = zio->io_type;
1756         int flags = (cutinline ? TQ_FRONT : 0);
1757
1758         /*
1759          * If we're a config writer or a probe, the normal issue and
1760          * interrupt threads may all be blocked waiting for the config lock.
1761          * In this case, select the otherwise-unused taskq for ZIO_TYPE_NULL.
1762          */
1763         if (zio->io_flags & (ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_PROBE))
1764                 t = ZIO_TYPE_NULL;
1765
1766         /*
1767          * A similar issue exists for the L2ARC write thread until L2ARC 2.0.
1768          */
1769         if (t == ZIO_TYPE_WRITE && zio->io_vd && zio->io_vd->vdev_aux)
1770                 t = ZIO_TYPE_NULL;
1771
1772         /*
1773          * If this is a high priority I/O, then use the high priority taskq if
1774          * available.
1775          */
1776         if ((zio->io_priority == ZIO_PRIORITY_NOW ||
1777             zio->io_priority == ZIO_PRIORITY_SYNC_WRITE) &&
1778             spa->spa_zio_taskq[t][q + 1].stqs_count != 0)
1779                 q++;
1780
1781         ASSERT3U(q, <, ZIO_TASKQ_TYPES);
1782
1783         /*
1784          * NB: We are assuming that the zio can only be dispatched
1785          * to a single taskq at a time.  It would be a grievous error
1786          * to dispatch the zio to another taskq at the same time.
1787          */
1788         ASSERT(taskq_empty_ent(&zio->io_tqent));
1789         spa_taskq_dispatch_ent(spa, t, q, (task_func_t *)zio_execute, zio,
1790             flags, &zio->io_tqent);
1791 }
1792
1793 static boolean_t
1794 zio_taskq_member(zio_t *zio, zio_taskq_type_t q)
1795 {
1796         kthread_t *executor = zio->io_executor;
1797         spa_t *spa = zio->io_spa;
1798
1799         for (zio_type_t t = 0; t < ZIO_TYPES; t++) {
1800                 spa_taskqs_t *tqs = &spa->spa_zio_taskq[t][q];
1801                 uint_t i;
1802                 for (i = 0; i < tqs->stqs_count; i++) {
1803                         if (taskq_member(tqs->stqs_taskq[i], executor))
1804                                 return (B_TRUE);
1805                 }
1806         }
1807
1808         return (B_FALSE);
1809 }
1810
1811 static zio_t *
1812 zio_issue_async(zio_t *zio)
1813 {
1814         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE);
1815
1816         return (NULL);
1817 }
1818
1819 void
1820 zio_interrupt(zio_t *zio)
1821 {
1822         zio_taskq_dispatch(zio, ZIO_TASKQ_INTERRUPT, B_FALSE);
1823 }
1824
1825 void
1826 zio_delay_interrupt(zio_t *zio)
1827 {
1828         /*
1829          * The timeout_generic() function isn't defined in userspace, so
1830          * rather than trying to implement the function, the zio delay
1831          * functionality has been disabled for userspace builds.
1832          */
1833
1834 #ifdef _KERNEL
1835         /*
1836          * If io_target_timestamp is zero, then no delay has been registered
1837          * for this IO, thus jump to the end of this function and "skip" the
1838          * delay; issuing it directly to the zio layer.
1839          */
1840         if (zio->io_target_timestamp != 0) {
1841                 hrtime_t now = gethrtime();
1842
1843                 if (now >= zio->io_target_timestamp) {
1844                         /*
1845                          * This IO has already taken longer than the target
1846                          * delay to complete, so we don't want to delay it
1847                          * any longer; we "miss" the delay and issue it
1848                          * directly to the zio layer. This is likely due to
1849                          * the target latency being set to a value less than
1850                          * the underlying hardware can satisfy (e.g. delay
1851                          * set to 1ms, but the disks take 10ms to complete an
1852                          * IO request).
1853                          */
1854
1855                         DTRACE_PROBE2(zio__delay__miss, zio_t *, zio,
1856                             hrtime_t, now);
1857
1858                         zio_interrupt(zio);
1859                 } else {
1860                         taskqid_t tid;
1861                         hrtime_t diff = zio->io_target_timestamp - now;
1862                         clock_t expire_at_tick = ddi_get_lbolt() +
1863                             NSEC_TO_TICK(diff);
1864
1865                         DTRACE_PROBE3(zio__delay__hit, zio_t *, zio,
1866                             hrtime_t, now, hrtime_t, diff);
1867
1868                         if (NSEC_TO_TICK(diff) == 0) {
1869                                 /* Our delay is less than a jiffy - just spin */
1870                                 zfs_sleep_until(zio->io_target_timestamp);
1871                                 zio_interrupt(zio);
1872                         } else {
1873                                 /*
1874                                  * Use taskq_dispatch_delay() in the place of
1875                                  * OpenZFS's timeout_generic().
1876                                  */
1877                                 tid = taskq_dispatch_delay(system_taskq,
1878                                     (task_func_t *)zio_interrupt,
1879                                     zio, TQ_NOSLEEP, expire_at_tick);
1880                                 if (tid == TASKQID_INVALID) {
1881                                         /*
1882                                          * Couldn't allocate a task.  Just
1883                                          * finish the zio without a delay.
1884                                          */
1885                                         zio_interrupt(zio);
1886                                 }
1887                         }
1888                 }
1889                 return;
1890         }
1891 #endif
1892         DTRACE_PROBE1(zio__delay__skip, zio_t *, zio);
1893         zio_interrupt(zio);
1894 }
1895
1896 static void
1897 zio_deadman_impl(zio_t *pio, int ziodepth)
1898 {
1899         zio_t *cio, *cio_next;
1900         zio_link_t *zl = NULL;
1901         vdev_t *vd = pio->io_vd;
1902
1903         if (zio_deadman_log_all || (vd != NULL && vd->vdev_ops->vdev_op_leaf)) {
1904                 vdev_queue_t *vq = vd ? &vd->vdev_queue : NULL;
1905                 zbookmark_phys_t *zb = &pio->io_bookmark;
1906                 uint64_t delta = gethrtime() - pio->io_timestamp;
1907                 uint64_t failmode = spa_get_deadman_failmode(pio->io_spa);
1908
1909                 zfs_dbgmsg("slow zio[%d]: zio=%px timestamp=%llu "
1910                     "delta=%llu queued=%llu io=%llu "
1911                     "path=%s last=%llu "
1912                     "type=%d priority=%d flags=0x%x "
1913                     "stage=0x%x pipeline=0x%x pipeline-trace=0x%x "
1914                     "objset=%llu object=%llu level=%llu blkid=%llu "
1915                     "offset=%llu size=%llu error=%d",
1916                     ziodepth, pio, pio->io_timestamp,
1917                     delta, pio->io_delta, pio->io_delay,
1918                     vd ? vd->vdev_path : "NULL", vq ? vq->vq_io_complete_ts : 0,
1919                     pio->io_type, pio->io_priority, pio->io_flags,
1920                     pio->io_stage, pio->io_pipeline, pio->io_pipeline_trace,
1921                     zb->zb_objset, zb->zb_object, zb->zb_level, zb->zb_blkid,
1922                     pio->io_offset, pio->io_size, pio->io_error);
1923                 zfs_ereport_post(FM_EREPORT_ZFS_DEADMAN,
1924                     pio->io_spa, vd, zb, pio, 0, 0);
1925
1926                 if (failmode == ZIO_FAILURE_MODE_CONTINUE &&
1927                     taskq_empty_ent(&pio->io_tqent)) {
1928                         zio_interrupt(pio);
1929                 }
1930         }
1931
1932         mutex_enter(&pio->io_lock);
1933         for (cio = zio_walk_children(pio, &zl); cio != NULL; cio = cio_next) {
1934                 cio_next = zio_walk_children(pio, &zl);
1935                 zio_deadman_impl(cio, ziodepth + 1);
1936         }
1937         mutex_exit(&pio->io_lock);
1938 }
1939
1940 /*
1941  * Log the critical information describing this zio and all of its children
1942  * using the zfs_dbgmsg() interface then post deadman event for the ZED.
1943  */
1944 void
1945 zio_deadman(zio_t *pio, char *tag)
1946 {
1947         spa_t *spa = pio->io_spa;
1948         char *name = spa_name(spa);
1949
1950         if (!zfs_deadman_enabled || spa_suspended(spa))
1951                 return;
1952
1953         zio_deadman_impl(pio, 0);
1954
1955         switch (spa_get_deadman_failmode(spa)) {
1956         case ZIO_FAILURE_MODE_WAIT:
1957                 zfs_dbgmsg("%s waiting for hung I/O to pool '%s'", tag, name);
1958                 break;
1959
1960         case ZIO_FAILURE_MODE_CONTINUE:
1961                 zfs_dbgmsg("%s restarting hung I/O for pool '%s'", tag, name);
1962                 break;
1963
1964         case ZIO_FAILURE_MODE_PANIC:
1965                 fm_panic("%s determined I/O to pool '%s' is hung.", tag, name);
1966                 break;
1967         }
1968 }
1969
1970 /*
1971  * Execute the I/O pipeline until one of the following occurs:
1972  * (1) the I/O completes; (2) the pipeline stalls waiting for
1973  * dependent child I/Os; (3) the I/O issues, so we're waiting
1974  * for an I/O completion interrupt; (4) the I/O is delegated by
1975  * vdev-level caching or aggregation; (5) the I/O is deferred
1976  * due to vdev-level queueing; (6) the I/O is handed off to
1977  * another thread.  In all cases, the pipeline stops whenever
1978  * there's no CPU work; it never burns a thread in cv_wait_io().
1979  *
1980  * There's no locking on io_stage because there's no legitimate way
1981  * for multiple threads to be attempting to process the same I/O.
1982  */
1983 static zio_pipe_stage_t *zio_pipeline[];
1984
1985 /*
1986  * zio_execute() is a wrapper around the static function
1987  * __zio_execute() so that we can force  __zio_execute() to be
1988  * inlined.  This reduces stack overhead which is important
1989  * because __zio_execute() is called recursively in several zio
1990  * code paths.  zio_execute() itself cannot be inlined because
1991  * it is externally visible.
1992  */
1993 void
1994 zio_execute(zio_t *zio)
1995 {
1996         fstrans_cookie_t cookie;
1997
1998         cookie = spl_fstrans_mark();
1999         __zio_execute(zio);
2000         spl_fstrans_unmark(cookie);
2001 }
2002
2003 /*
2004  * Used to determine if in the current context the stack is sized large
2005  * enough to allow zio_execute() to be called recursively.  A minimum
2006  * stack size of 16K is required to avoid needing to re-dispatch the zio.
2007  */
2008 boolean_t
2009 zio_execute_stack_check(zio_t *zio)
2010 {
2011 #if !defined(HAVE_LARGE_STACKS)
2012         dsl_pool_t *dp = spa_get_dsl(zio->io_spa);
2013
2014         /* Executing in txg_sync_thread() context. */
2015         if (dp && curthread == dp->dp_tx.tx_sync_thread)
2016                 return (B_TRUE);
2017
2018         /* Pool initialization outside of zio_taskq context. */
2019         if (dp && spa_is_initializing(dp->dp_spa) &&
2020             !zio_taskq_member(zio, ZIO_TASKQ_ISSUE) &&
2021             !zio_taskq_member(zio, ZIO_TASKQ_ISSUE_HIGH))
2022                 return (B_TRUE);
2023 #endif /* HAVE_LARGE_STACKS */
2024
2025         return (B_FALSE);
2026 }
2027
2028 __attribute__((always_inline))
2029 static inline void
2030 __zio_execute(zio_t *zio)
2031 {
2032         ASSERT3U(zio->io_queued_timestamp, >, 0);
2033
2034         while (zio->io_stage < ZIO_STAGE_DONE) {
2035                 enum zio_stage pipeline = zio->io_pipeline;
2036                 enum zio_stage stage = zio->io_stage;
2037
2038                 zio->io_executor = curthread;
2039
2040                 ASSERT(!MUTEX_HELD(&zio->io_lock));
2041                 ASSERT(ISP2(stage));
2042                 ASSERT(zio->io_stall == NULL);
2043
2044                 do {
2045                         stage <<= 1;
2046                 } while ((stage & pipeline) == 0);
2047
2048                 ASSERT(stage <= ZIO_STAGE_DONE);
2049
2050                 /*
2051                  * If we are in interrupt context and this pipeline stage
2052                  * will grab a config lock that is held across I/O,
2053                  * or may wait for an I/O that needs an interrupt thread
2054                  * to complete, issue async to avoid deadlock.
2055                  *
2056                  * For VDEV_IO_START, we cut in line so that the io will
2057                  * be sent to disk promptly.
2058                  */
2059                 if ((stage & ZIO_BLOCKING_STAGES) && zio->io_vd == NULL &&
2060                     zio_taskq_member(zio, ZIO_TASKQ_INTERRUPT)) {
2061                         boolean_t cut = (stage == ZIO_STAGE_VDEV_IO_START) ?
2062                             zio_requeue_io_start_cut_in_line : B_FALSE;
2063                         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, cut);
2064                         return;
2065                 }
2066
2067                 /*
2068                  * If the current context doesn't have large enough stacks
2069                  * the zio must be issued asynchronously to prevent overflow.
2070                  */
2071                 if (zio_execute_stack_check(zio)) {
2072                         boolean_t cut = (stage == ZIO_STAGE_VDEV_IO_START) ?
2073                             zio_requeue_io_start_cut_in_line : B_FALSE;
2074                         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, cut);
2075                         return;
2076                 }
2077
2078                 zio->io_stage = stage;
2079                 zio->io_pipeline_trace |= zio->io_stage;
2080
2081                 /*
2082                  * The zio pipeline stage returns the next zio to execute
2083                  * (typically the same as this one), or NULL if we should
2084                  * stop.
2085                  */
2086                 zio = zio_pipeline[highbit64(stage) - 1](zio);
2087
2088                 if (zio == NULL)
2089                         return;
2090         }
2091 }
2092
2093
2094 /*
2095  * ==========================================================================
2096  * Initiate I/O, either sync or async
2097  * ==========================================================================
2098  */
2099 int
2100 zio_wait(zio_t *zio)
2101 {
2102         long timeout = MSEC_TO_TICK(zfs_deadman_ziotime_ms);
2103         int error;
2104
2105         ASSERT3S(zio->io_stage, ==, ZIO_STAGE_OPEN);
2106         ASSERT3P(zio->io_executor, ==, NULL);
2107
2108         zio->io_waiter = curthread;
2109         ASSERT0(zio->io_queued_timestamp);
2110         zio->io_queued_timestamp = gethrtime();
2111
2112         __zio_execute(zio);
2113
2114         mutex_enter(&zio->io_lock);
2115         while (zio->io_executor != NULL) {
2116                 error = cv_timedwait_io(&zio->io_cv, &zio->io_lock,
2117                     ddi_get_lbolt() + timeout);
2118
2119                 if (zfs_deadman_enabled && error == -1 &&
2120                     gethrtime() - zio->io_queued_timestamp >
2121                     spa_deadman_ziotime(zio->io_spa)) {
2122                         mutex_exit(&zio->io_lock);
2123                         timeout = MSEC_TO_TICK(zfs_deadman_checktime_ms);
2124                         zio_deadman(zio, FTAG);
2125                         mutex_enter(&zio->io_lock);
2126                 }
2127         }
2128         mutex_exit(&zio->io_lock);
2129
2130         error = zio->io_error;
2131         zio_destroy(zio);
2132
2133         return (error);
2134 }
2135
2136 void
2137 zio_nowait(zio_t *zio)
2138 {
2139         ASSERT3P(zio->io_executor, ==, NULL);
2140
2141         if (zio->io_child_type == ZIO_CHILD_LOGICAL &&
2142             zio_unique_parent(zio) == NULL) {
2143                 zio_t *pio;
2144
2145                 /*
2146                  * This is a logical async I/O with no parent to wait for it.
2147                  * We add it to the spa_async_root_zio "Godfather" I/O which
2148                  * will ensure they complete prior to unloading the pool.
2149                  */
2150                 spa_t *spa = zio->io_spa;
2151                 kpreempt_disable();
2152                 pio = spa->spa_async_zio_root[CPU_SEQID];
2153                 kpreempt_enable();
2154
2155                 zio_add_child(pio, zio);
2156         }
2157
2158         ASSERT0(zio->io_queued_timestamp);
2159         zio->io_queued_timestamp = gethrtime();
2160         __zio_execute(zio);
2161 }
2162
2163 /*
2164  * ==========================================================================
2165  * Reexecute, cancel, or suspend/resume failed I/O
2166  * ==========================================================================
2167  */
2168
2169 static void
2170 zio_reexecute(zio_t *pio)
2171 {
2172         zio_t *cio, *cio_next;
2173
2174         ASSERT(pio->io_child_type == ZIO_CHILD_LOGICAL);
2175         ASSERT(pio->io_orig_stage == ZIO_STAGE_OPEN);
2176         ASSERT(pio->io_gang_leader == NULL);
2177         ASSERT(pio->io_gang_tree == NULL);
2178
2179         pio->io_flags = pio->io_orig_flags;
2180         pio->io_stage = pio->io_orig_stage;
2181         pio->io_pipeline = pio->io_orig_pipeline;
2182         pio->io_reexecute = 0;
2183         pio->io_flags |= ZIO_FLAG_REEXECUTED;
2184         pio->io_pipeline_trace = 0;
2185         pio->io_error = 0;
2186         for (int w = 0; w < ZIO_WAIT_TYPES; w++)
2187                 pio->io_state[w] = 0;
2188         for (int c = 0; c < ZIO_CHILD_TYPES; c++)
2189                 pio->io_child_error[c] = 0;
2190
2191         if (IO_IS_ALLOCATING(pio))
2192                 BP_ZERO(pio->io_bp);
2193
2194         /*
2195          * As we reexecute pio's children, new children could be created.
2196          * New children go to the head of pio's io_child_list, however,
2197          * so we will (correctly) not reexecute them.  The key is that
2198          * the remainder of pio's io_child_list, from 'cio_next' onward,
2199          * cannot be affected by any side effects of reexecuting 'cio'.
2200          */
2201         zio_link_t *zl = NULL;
2202         mutex_enter(&pio->io_lock);
2203         for (cio = zio_walk_children(pio, &zl); cio != NULL; cio = cio_next) {
2204                 cio_next = zio_walk_children(pio, &zl);
2205                 for (int w = 0; w < ZIO_WAIT_TYPES; w++)
2206                         pio->io_children[cio->io_child_type][w]++;
2207                 mutex_exit(&pio->io_lock);
2208                 zio_reexecute(cio);
2209                 mutex_enter(&pio->io_lock);
2210         }
2211         mutex_exit(&pio->io_lock);
2212
2213         /*
2214          * Now that all children have been reexecuted, execute the parent.
2215          * We don't reexecute "The Godfather" I/O here as it's the
2216          * responsibility of the caller to wait on it.
2217          */
2218         if (!(pio->io_flags & ZIO_FLAG_GODFATHER)) {
2219                 pio->io_queued_timestamp = gethrtime();
2220                 __zio_execute(pio);
2221         }
2222 }
2223
2224 void
2225 zio_suspend(spa_t *spa, zio_t *zio, zio_suspend_reason_t reason)
2226 {
2227         if (spa_get_failmode(spa) == ZIO_FAILURE_MODE_PANIC)
2228                 fm_panic("Pool '%s' has encountered an uncorrectable I/O "
2229                     "failure and the failure mode property for this pool "
2230                     "is set to panic.", spa_name(spa));
2231
2232         cmn_err(CE_WARN, "Pool '%s' has encountered an uncorrectable I/O "
2233             "failure and has been suspended.\n", spa_name(spa));
2234
2235         zfs_ereport_post(FM_EREPORT_ZFS_IO_FAILURE, spa, NULL,
2236             NULL, NULL, 0, 0);
2237
2238         mutex_enter(&spa->spa_suspend_lock);
2239
2240         if (spa->spa_suspend_zio_root == NULL)
2241                 spa->spa_suspend_zio_root = zio_root(spa, NULL, NULL,
2242                     ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE |
2243                     ZIO_FLAG_GODFATHER);
2244
2245         spa->spa_suspended = reason;
2246
2247         if (zio != NULL) {
2248                 ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER));
2249                 ASSERT(zio != spa->spa_suspend_zio_root);
2250                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2251                 ASSERT(zio_unique_parent(zio) == NULL);
2252                 ASSERT(zio->io_stage == ZIO_STAGE_DONE);
2253                 zio_add_child(spa->spa_suspend_zio_root, zio);
2254         }
2255
2256         mutex_exit(&spa->spa_suspend_lock);
2257 }
2258
2259 int
2260 zio_resume(spa_t *spa)
2261 {
2262         zio_t *pio;
2263
2264         /*
2265          * Reexecute all previously suspended i/o.
2266          */
2267         mutex_enter(&spa->spa_suspend_lock);
2268         spa->spa_suspended = ZIO_SUSPEND_NONE;
2269         cv_broadcast(&spa->spa_suspend_cv);
2270         pio = spa->spa_suspend_zio_root;
2271         spa->spa_suspend_zio_root = NULL;
2272         mutex_exit(&spa->spa_suspend_lock);
2273
2274         if (pio == NULL)
2275                 return (0);
2276
2277         zio_reexecute(pio);
2278         return (zio_wait(pio));
2279 }
2280
2281 void
2282 zio_resume_wait(spa_t *spa)
2283 {
2284         mutex_enter(&spa->spa_suspend_lock);
2285         while (spa_suspended(spa))
2286                 cv_wait(&spa->spa_suspend_cv, &spa->spa_suspend_lock);
2287         mutex_exit(&spa->spa_suspend_lock);
2288 }
2289
2290 /*
2291  * ==========================================================================
2292  * Gang blocks.
2293  *
2294  * A gang block is a collection of small blocks that looks to the DMU
2295  * like one large block.  When zio_dva_allocate() cannot find a block
2296  * of the requested size, due to either severe fragmentation or the pool
2297  * being nearly full, it calls zio_write_gang_block() to construct the
2298  * block from smaller fragments.
2299  *
2300  * A gang block consists of a gang header (zio_gbh_phys_t) and up to
2301  * three (SPA_GBH_NBLKPTRS) gang members.  The gang header is just like
2302  * an indirect block: it's an array of block pointers.  It consumes
2303  * only one sector and hence is allocatable regardless of fragmentation.
2304  * The gang header's bps point to its gang members, which hold the data.
2305  *
2306  * Gang blocks are self-checksumming, using the bp's <vdev, offset, txg>
2307  * as the verifier to ensure uniqueness of the SHA256 checksum.
2308  * Critically, the gang block bp's blk_cksum is the checksum of the data,
2309  * not the gang header.  This ensures that data block signatures (needed for
2310  * deduplication) are independent of how the block is physically stored.
2311  *
2312  * Gang blocks can be nested: a gang member may itself be a gang block.
2313  * Thus every gang block is a tree in which root and all interior nodes are
2314  * gang headers, and the leaves are normal blocks that contain user data.
2315  * The root of the gang tree is called the gang leader.
2316  *
2317  * To perform any operation (read, rewrite, free, claim) on a gang block,
2318  * zio_gang_assemble() first assembles the gang tree (minus data leaves)
2319  * in the io_gang_tree field of the original logical i/o by recursively
2320  * reading the gang leader and all gang headers below it.  This yields
2321  * an in-core tree containing the contents of every gang header and the
2322  * bps for every constituent of the gang block.
2323  *
2324  * With the gang tree now assembled, zio_gang_issue() just walks the gang tree
2325  * and invokes a callback on each bp.  To free a gang block, zio_gang_issue()
2326  * calls zio_free_gang() -- a trivial wrapper around zio_free() -- for each bp.
2327  * zio_claim_gang() provides a similarly trivial wrapper for zio_claim().
2328  * zio_read_gang() is a wrapper around zio_read() that omits reading gang
2329  * headers, since we already have those in io_gang_tree.  zio_rewrite_gang()
2330  * performs a zio_rewrite() of the data or, for gang headers, a zio_rewrite()
2331  * of the gang header plus zio_checksum_compute() of the data to update the
2332  * gang header's blk_cksum as described above.
2333  *
2334  * The two-phase assemble/issue model solves the problem of partial failure --
2335  * what if you'd freed part of a gang block but then couldn't read the
2336  * gang header for another part?  Assembling the entire gang tree first
2337  * ensures that all the necessary gang header I/O has succeeded before
2338  * starting the actual work of free, claim, or write.  Once the gang tree
2339  * is assembled, free and claim are in-memory operations that cannot fail.
2340  *
2341  * In the event that a gang write fails, zio_dva_unallocate() walks the
2342  * gang tree to immediately free (i.e. insert back into the space map)
2343  * everything we've allocated.  This ensures that we don't get ENOSPC
2344  * errors during repeated suspend/resume cycles due to a flaky device.
2345  *
2346  * Gang rewrites only happen during sync-to-convergence.  If we can't assemble
2347  * the gang tree, we won't modify the block, so we can safely defer the free
2348  * (knowing that the block is still intact).  If we *can* assemble the gang
2349  * tree, then even if some of the rewrites fail, zio_dva_unallocate() will free
2350  * each constituent bp and we can allocate a new block on the next sync pass.
2351  *
2352  * In all cases, the gang tree allows complete recovery from partial failure.
2353  * ==========================================================================
2354  */
2355
2356 static void
2357 zio_gang_issue_func_done(zio_t *zio)
2358 {
2359         abd_put(zio->io_abd);
2360 }
2361
2362 static zio_t *
2363 zio_read_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, abd_t *data,
2364     uint64_t offset)
2365 {
2366         if (gn != NULL)
2367                 return (pio);
2368
2369         return (zio_read(pio, pio->io_spa, bp, abd_get_offset(data, offset),
2370             BP_GET_PSIZE(bp), zio_gang_issue_func_done,
2371             NULL, pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio),
2372             &pio->io_bookmark));
2373 }
2374
2375 static zio_t *
2376 zio_rewrite_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, abd_t *data,
2377     uint64_t offset)
2378 {
2379         zio_t *zio;
2380
2381         if (gn != NULL) {
2382                 abd_t *gbh_abd =
2383                     abd_get_from_buf(gn->gn_gbh, SPA_GANGBLOCKSIZE);
2384                 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp,
2385                     gbh_abd, SPA_GANGBLOCKSIZE, zio_gang_issue_func_done, NULL,
2386                     pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio),
2387                     &pio->io_bookmark);
2388                 /*
2389                  * As we rewrite each gang header, the pipeline will compute
2390                  * a new gang block header checksum for it; but no one will
2391                  * compute a new data checksum, so we do that here.  The one
2392                  * exception is the gang leader: the pipeline already computed
2393                  * its data checksum because that stage precedes gang assembly.
2394                  * (Presently, nothing actually uses interior data checksums;
2395                  * this is just good hygiene.)
2396                  */
2397                 if (gn != pio->io_gang_leader->io_gang_tree) {
2398                         abd_t *buf = abd_get_offset(data, offset);
2399
2400                         zio_checksum_compute(zio, BP_GET_CHECKSUM(bp),
2401                             buf, BP_GET_PSIZE(bp));
2402
2403                         abd_put(buf);
2404                 }
2405                 /*
2406                  * If we are here to damage data for testing purposes,
2407                  * leave the GBH alone so that we can detect the damage.
2408                  */
2409                 if (pio->io_gang_leader->io_flags & ZIO_FLAG_INDUCE_DAMAGE)
2410                         zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES;
2411         } else {
2412                 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp,
2413                     abd_get_offset(data, offset), BP_GET_PSIZE(bp),
2414                     zio_gang_issue_func_done, NULL, pio->io_priority,
2415                     ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
2416         }
2417
2418         return (zio);
2419 }
2420
2421 /* ARGSUSED */
2422 static zio_t *
2423 zio_free_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, abd_t *data,
2424     uint64_t offset)
2425 {
2426         return (zio_free_sync(pio, pio->io_spa, pio->io_txg, bp,
2427             ZIO_GANG_CHILD_FLAGS(pio)));
2428 }
2429
2430 /* ARGSUSED */
2431 static zio_t *
2432 zio_claim_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, abd_t *data,
2433     uint64_t offset)
2434 {
2435         return (zio_claim(pio, pio->io_spa, pio->io_txg, bp,
2436             NULL, NULL, ZIO_GANG_CHILD_FLAGS(pio)));
2437 }
2438
2439 static zio_gang_issue_func_t *zio_gang_issue_func[ZIO_TYPES] = {
2440         NULL,
2441         zio_read_gang,
2442         zio_rewrite_gang,
2443         zio_free_gang,
2444         zio_claim_gang,
2445         NULL
2446 };
2447
2448 static void zio_gang_tree_assemble_done(zio_t *zio);
2449
2450 static zio_gang_node_t *
2451 zio_gang_node_alloc(zio_gang_node_t **gnpp)
2452 {
2453         zio_gang_node_t *gn;
2454
2455         ASSERT(*gnpp == NULL);
2456
2457         gn = kmem_zalloc(sizeof (*gn), KM_SLEEP);
2458         gn->gn_gbh = zio_buf_alloc(SPA_GANGBLOCKSIZE);
2459         *gnpp = gn;
2460
2461         return (gn);
2462 }
2463
2464 static void
2465 zio_gang_node_free(zio_gang_node_t **gnpp)
2466 {
2467         zio_gang_node_t *gn = *gnpp;
2468
2469         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++)
2470                 ASSERT(gn->gn_child[g] == NULL);
2471
2472         zio_buf_free(gn->gn_gbh, SPA_GANGBLOCKSIZE);
2473         kmem_free(gn, sizeof (*gn));
2474         *gnpp = NULL;
2475 }
2476
2477 static void
2478 zio_gang_tree_free(zio_gang_node_t **gnpp)
2479 {
2480         zio_gang_node_t *gn = *gnpp;
2481
2482         if (gn == NULL)
2483                 return;
2484
2485         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++)
2486                 zio_gang_tree_free(&gn->gn_child[g]);
2487
2488         zio_gang_node_free(gnpp);
2489 }
2490
2491 static void
2492 zio_gang_tree_assemble(zio_t *gio, blkptr_t *bp, zio_gang_node_t **gnpp)
2493 {
2494         zio_gang_node_t *gn = zio_gang_node_alloc(gnpp);
2495         abd_t *gbh_abd = abd_get_from_buf(gn->gn_gbh, SPA_GANGBLOCKSIZE);
2496
2497         ASSERT(gio->io_gang_leader == gio);
2498         ASSERT(BP_IS_GANG(bp));
2499
2500         zio_nowait(zio_read(gio, gio->io_spa, bp, gbh_abd, SPA_GANGBLOCKSIZE,
2501             zio_gang_tree_assemble_done, gn, gio->io_priority,
2502             ZIO_GANG_CHILD_FLAGS(gio), &gio->io_bookmark));
2503 }
2504
2505 static void
2506 zio_gang_tree_assemble_done(zio_t *zio)
2507 {
2508         zio_t *gio = zio->io_gang_leader;
2509         zio_gang_node_t *gn = zio->io_private;
2510         blkptr_t *bp = zio->io_bp;
2511
2512         ASSERT(gio == zio_unique_parent(zio));
2513         ASSERT(zio->io_child_count == 0);
2514
2515         if (zio->io_error)
2516                 return;
2517
2518         /* this ABD was created from a linear buf in zio_gang_tree_assemble */
2519         if (BP_SHOULD_BYTESWAP(bp))
2520                 byteswap_uint64_array(abd_to_buf(zio->io_abd), zio->io_size);
2521
2522         ASSERT3P(abd_to_buf(zio->io_abd), ==, gn->gn_gbh);
2523         ASSERT(zio->io_size == SPA_GANGBLOCKSIZE);
2524         ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC);
2525
2526         abd_put(zio->io_abd);
2527
2528         for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
2529                 blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g];
2530                 if (!BP_IS_GANG(gbp))
2531                         continue;
2532                 zio_gang_tree_assemble(gio, gbp, &gn->gn_child[g]);
2533         }
2534 }
2535
2536 static void
2537 zio_gang_tree_issue(zio_t *pio, zio_gang_node_t *gn, blkptr_t *bp, abd_t *data,
2538     uint64_t offset)
2539 {
2540         zio_t *gio = pio->io_gang_leader;
2541         zio_t *zio;
2542
2543         ASSERT(BP_IS_GANG(bp) == !!gn);
2544         ASSERT(BP_GET_CHECKSUM(bp) == BP_GET_CHECKSUM(gio->io_bp));
2545         ASSERT(BP_GET_LSIZE(bp) == BP_GET_PSIZE(bp) || gn == gio->io_gang_tree);
2546
2547         /*
2548          * If you're a gang header, your data is in gn->gn_gbh.
2549          * If you're a gang member, your data is in 'data' and gn == NULL.
2550          */
2551         zio = zio_gang_issue_func[gio->io_type](pio, bp, gn, data, offset);
2552
2553         if (gn != NULL) {
2554                 ASSERT(gn->gn_gbh->zg_tail.zec_magic == ZEC_MAGIC);
2555
2556                 for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
2557                         blkptr_t *gbp = &gn->gn_gbh->zg_blkptr[g];
2558                         if (BP_IS_HOLE(gbp))
2559                                 continue;
2560                         zio_gang_tree_issue(zio, gn->gn_child[g], gbp, data,
2561                             offset);
2562                         offset += BP_GET_PSIZE(gbp);
2563                 }
2564         }
2565
2566         if (gn == gio->io_gang_tree)
2567                 ASSERT3U(gio->io_size, ==, offset);
2568
2569         if (zio != pio)
2570                 zio_nowait(zio);
2571 }
2572
2573 static zio_t *
2574 zio_gang_assemble(zio_t *zio)
2575 {
2576         blkptr_t *bp = zio->io_bp;
2577
2578         ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == NULL);
2579         ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
2580
2581         zio->io_gang_leader = zio;
2582
2583         zio_gang_tree_assemble(zio, bp, &zio->io_gang_tree);
2584
2585         return (zio);
2586 }
2587
2588 static zio_t *
2589 zio_gang_issue(zio_t *zio)
2590 {
2591         blkptr_t *bp = zio->io_bp;
2592
2593         if (zio_wait_for_children(zio, ZIO_CHILD_GANG_BIT, ZIO_WAIT_DONE)) {
2594                 return (NULL);
2595         }
2596
2597         ASSERT(BP_IS_GANG(bp) && zio->io_gang_leader == zio);
2598         ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
2599
2600         if (zio->io_child_error[ZIO_CHILD_GANG] == 0)
2601                 zio_gang_tree_issue(zio, zio->io_gang_tree, bp, zio->io_abd,
2602                     0);
2603         else
2604                 zio_gang_tree_free(&zio->io_gang_tree);
2605
2606         zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
2607
2608         return (zio);
2609 }
2610
2611 static void
2612 zio_write_gang_member_ready(zio_t *zio)
2613 {
2614         zio_t *pio = zio_unique_parent(zio);
2615         dva_t *cdva = zio->io_bp->blk_dva;
2616         dva_t *pdva = pio->io_bp->blk_dva;
2617         uint64_t asize;
2618         ASSERTV(zio_t *gio = zio->io_gang_leader);
2619
2620         if (BP_IS_HOLE(zio->io_bp))
2621                 return;
2622
2623         ASSERT(BP_IS_HOLE(&zio->io_bp_orig));
2624
2625         ASSERT(zio->io_child_type == ZIO_CHILD_GANG);
2626         ASSERT3U(zio->io_prop.zp_copies, ==, gio->io_prop.zp_copies);
2627         ASSERT3U(zio->io_prop.zp_copies, <=, BP_GET_NDVAS(zio->io_bp));
2628         ASSERT3U(pio->io_prop.zp_copies, <=, BP_GET_NDVAS(pio->io_bp));
2629         ASSERT3U(BP_GET_NDVAS(zio->io_bp), <=, BP_GET_NDVAS(pio->io_bp));
2630
2631         mutex_enter(&pio->io_lock);
2632         for (int d = 0; d < BP_GET_NDVAS(zio->io_bp); d++) {
2633                 ASSERT(DVA_GET_GANG(&pdva[d]));
2634                 asize = DVA_GET_ASIZE(&pdva[d]);
2635                 asize += DVA_GET_ASIZE(&cdva[d]);
2636                 DVA_SET_ASIZE(&pdva[d], asize);
2637         }
2638         mutex_exit(&pio->io_lock);
2639 }
2640
2641 static void
2642 zio_write_gang_done(zio_t *zio)
2643 {
2644         /*
2645          * The io_abd field will be NULL for a zio with no data.  The io_flags
2646          * will initially have the ZIO_FLAG_NODATA bit flag set, but we can't
2647          * check for it here as it is cleared in zio_ready.
2648          */
2649         if (zio->io_abd != NULL)
2650                 abd_put(zio->io_abd);
2651 }
2652
2653 static zio_t *
2654 zio_write_gang_block(zio_t *pio)
2655 {
2656         spa_t *spa = pio->io_spa;
2657         metaslab_class_t *mc = spa_normal_class(spa);
2658         blkptr_t *bp = pio->io_bp;
2659         zio_t *gio = pio->io_gang_leader;
2660         zio_t *zio;
2661         zio_gang_node_t *gn, **gnpp;
2662         zio_gbh_phys_t *gbh;
2663         abd_t *gbh_abd;
2664         uint64_t txg = pio->io_txg;
2665         uint64_t resid = pio->io_size;
2666         uint64_t lsize;
2667         int copies = gio->io_prop.zp_copies;
2668         int gbh_copies;
2669         zio_prop_t zp;
2670         int error;
2671         boolean_t has_data = !(pio->io_flags & ZIO_FLAG_NODATA);
2672
2673         /*
2674          * encrypted blocks need DVA[2] free so encrypted gang headers can't
2675          * have a third copy.
2676          */
2677         gbh_copies = MIN(copies + 1, spa_max_replication(spa));
2678         if (gio->io_prop.zp_encrypt && gbh_copies >= SPA_DVAS_PER_BP)
2679                 gbh_copies = SPA_DVAS_PER_BP - 1;
2680
2681         int flags = METASLAB_HINTBP_FAVOR | METASLAB_GANG_HEADER;
2682         if (pio->io_flags & ZIO_FLAG_IO_ALLOCATING) {
2683                 ASSERT(pio->io_priority == ZIO_PRIORITY_ASYNC_WRITE);
2684                 ASSERT(has_data);
2685
2686                 flags |= METASLAB_ASYNC_ALLOC;
2687                 VERIFY(zfs_refcount_held(&mc->mc_alloc_slots[pio->io_allocator],
2688                     pio));
2689
2690                 /*
2691                  * The logical zio has already placed a reservation for
2692                  * 'copies' allocation slots but gang blocks may require
2693                  * additional copies. These additional copies
2694                  * (i.e. gbh_copies - copies) are guaranteed to succeed
2695                  * since metaslab_class_throttle_reserve() always allows
2696                  * additional reservations for gang blocks.
2697                  */
2698                 VERIFY(metaslab_class_throttle_reserve(mc, gbh_copies - copies,
2699                     pio->io_allocator, pio, flags));
2700         }
2701
2702         error = metaslab_alloc(spa, mc, SPA_GANGBLOCKSIZE,
2703             bp, gbh_copies, txg, pio == gio ? NULL : gio->io_bp, flags,
2704             &pio->io_alloc_list, pio, pio->io_allocator);
2705         if (error) {
2706                 if (pio->io_flags & ZIO_FLAG_IO_ALLOCATING) {
2707                         ASSERT(pio->io_priority == ZIO_PRIORITY_ASYNC_WRITE);
2708                         ASSERT(has_data);
2709
2710                         /*
2711                          * If we failed to allocate the gang block header then
2712                          * we remove any additional allocation reservations that
2713                          * we placed here. The original reservation will
2714                          * be removed when the logical I/O goes to the ready
2715                          * stage.
2716                          */
2717                         metaslab_class_throttle_unreserve(mc,
2718                             gbh_copies - copies, pio->io_allocator, pio);
2719                 }
2720
2721                 pio->io_error = error;
2722                 return (pio);
2723         }
2724
2725         if (pio == gio) {
2726                 gnpp = &gio->io_gang_tree;
2727         } else {
2728                 gnpp = pio->io_private;
2729                 ASSERT(pio->io_ready == zio_write_gang_member_ready);
2730         }
2731
2732         gn = zio_gang_node_alloc(gnpp);
2733         gbh = gn->gn_gbh;
2734         bzero(gbh, SPA_GANGBLOCKSIZE);
2735         gbh_abd = abd_get_from_buf(gbh, SPA_GANGBLOCKSIZE);
2736
2737         /*
2738          * Create the gang header.
2739          */
2740         zio = zio_rewrite(pio, spa, txg, bp, gbh_abd, SPA_GANGBLOCKSIZE,
2741             zio_write_gang_done, NULL, pio->io_priority,
2742             ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
2743
2744         /*
2745          * Create and nowait the gang children.
2746          */
2747         for (int g = 0; resid != 0; resid -= lsize, g++) {
2748                 lsize = P2ROUNDUP(resid / (SPA_GBH_NBLKPTRS - g),
2749                     SPA_MINBLOCKSIZE);
2750                 ASSERT(lsize >= SPA_MINBLOCKSIZE && lsize <= resid);
2751
2752                 zp.zp_checksum = gio->io_prop.zp_checksum;
2753                 zp.zp_compress = ZIO_COMPRESS_OFF;
2754                 zp.zp_type = DMU_OT_NONE;
2755                 zp.zp_level = 0;
2756                 zp.zp_copies = gio->io_prop.zp_copies;
2757                 zp.zp_dedup = B_FALSE;
2758                 zp.zp_dedup_verify = B_FALSE;
2759                 zp.zp_nopwrite = B_FALSE;
2760                 zp.zp_encrypt = gio->io_prop.zp_encrypt;
2761                 zp.zp_byteorder = gio->io_prop.zp_byteorder;
2762                 bzero(zp.zp_salt, ZIO_DATA_SALT_LEN);
2763                 bzero(zp.zp_iv, ZIO_DATA_IV_LEN);
2764                 bzero(zp.zp_mac, ZIO_DATA_MAC_LEN);
2765
2766                 zio_t *cio = zio_write(zio, spa, txg, &gbh->zg_blkptr[g],
2767                     has_data ? abd_get_offset(pio->io_abd, pio->io_size -
2768                     resid) : NULL, lsize, lsize, &zp,
2769                     zio_write_gang_member_ready, NULL, NULL,
2770                     zio_write_gang_done, &gn->gn_child[g], pio->io_priority,
2771                     ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark);
2772
2773                 if (pio->io_flags & ZIO_FLAG_IO_ALLOCATING) {
2774                         ASSERT(pio->io_priority == ZIO_PRIORITY_ASYNC_WRITE);
2775                         ASSERT(has_data);
2776
2777                         /*
2778                          * Gang children won't throttle but we should
2779                          * account for their work, so reserve an allocation
2780                          * slot for them here.
2781                          */
2782                         VERIFY(metaslab_class_throttle_reserve(mc,
2783                             zp.zp_copies, cio->io_allocator, cio, flags));
2784                 }
2785                 zio_nowait(cio);
2786         }
2787
2788         /*
2789          * Set pio's pipeline to just wait for zio to finish.
2790          */
2791         pio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
2792
2793         /*
2794          * We didn't allocate this bp, so make sure it doesn't get unmarked.
2795          */
2796         pio->io_flags &= ~ZIO_FLAG_FASTWRITE;
2797
2798         zio_nowait(zio);
2799
2800         return (pio);
2801 }
2802
2803 /*
2804  * The zio_nop_write stage in the pipeline determines if allocating a
2805  * new bp is necessary.  The nopwrite feature can handle writes in
2806  * either syncing or open context (i.e. zil writes) and as a result is
2807  * mutually exclusive with dedup.
2808  *
2809  * By leveraging a cryptographically secure checksum, such as SHA256, we
2810  * can compare the checksums of the new data and the old to determine if
2811  * allocating a new block is required.  Note that our requirements for
2812  * cryptographic strength are fairly weak: there can't be any accidental
2813  * hash collisions, but we don't need to be secure against intentional
2814  * (malicious) collisions.  To trigger a nopwrite, you have to be able
2815  * to write the file to begin with, and triggering an incorrect (hash
2816  * collision) nopwrite is no worse than simply writing to the file.
2817  * That said, there are no known attacks against the checksum algorithms
2818  * used for nopwrite, assuming that the salt and the checksums
2819  * themselves remain secret.
2820  */
2821 static zio_t *
2822 zio_nop_write(zio_t *zio)
2823 {
2824         blkptr_t *bp = zio->io_bp;
2825         blkptr_t *bp_orig = &zio->io_bp_orig;
2826         zio_prop_t *zp = &zio->io_prop;
2827
2828         ASSERT(BP_GET_LEVEL(bp) == 0);
2829         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REWRITE));
2830         ASSERT(zp->zp_nopwrite);
2831         ASSERT(!zp->zp_dedup);
2832         ASSERT(zio->io_bp_override == NULL);
2833         ASSERT(IO_IS_ALLOCATING(zio));
2834
2835         /*
2836          * Check to see if the original bp and the new bp have matching
2837          * characteristics (i.e. same checksum, compression algorithms, etc).
2838          * If they don't then just continue with the pipeline which will
2839          * allocate a new bp.
2840          */
2841         if (BP_IS_HOLE(bp_orig) ||
2842             !(zio_checksum_table[BP_GET_CHECKSUM(bp)].ci_flags &
2843             ZCHECKSUM_FLAG_NOPWRITE) ||
2844             BP_IS_ENCRYPTED(bp) || BP_IS_ENCRYPTED(bp_orig) ||
2845             BP_GET_CHECKSUM(bp) != BP_GET_CHECKSUM(bp_orig) ||
2846             BP_GET_COMPRESS(bp) != BP_GET_COMPRESS(bp_orig) ||
2847             BP_GET_DEDUP(bp) != BP_GET_DEDUP(bp_orig) ||
2848             zp->zp_copies != BP_GET_NDVAS(bp_orig))
2849                 return (zio);
2850
2851         /*
2852          * If the checksums match then reset the pipeline so that we
2853          * avoid allocating a new bp and issuing any I/O.
2854          */
2855         if (ZIO_CHECKSUM_EQUAL(bp->blk_cksum, bp_orig->blk_cksum)) {
2856                 ASSERT(zio_checksum_table[zp->zp_checksum].ci_flags &
2857                     ZCHECKSUM_FLAG_NOPWRITE);
2858                 ASSERT3U(BP_GET_PSIZE(bp), ==, BP_GET_PSIZE(bp_orig));
2859                 ASSERT3U(BP_GET_LSIZE(bp), ==, BP_GET_LSIZE(bp_orig));
2860                 ASSERT(zp->zp_compress != ZIO_COMPRESS_OFF);
2861                 ASSERT(bcmp(&bp->blk_prop, &bp_orig->blk_prop,
2862                     sizeof (uint64_t)) == 0);
2863
2864                 /*
2865                  * If we're overwriting a block that is currently on an
2866                  * indirect vdev, then ignore the nopwrite request and
2867                  * allow a new block to be allocated on a concrete vdev.
2868                  */
2869                 spa_config_enter(zio->io_spa, SCL_VDEV, FTAG, RW_READER);
2870                 vdev_t *tvd = vdev_lookup_top(zio->io_spa,
2871                     DVA_GET_VDEV(&bp->blk_dva[0]));
2872                 if (tvd->vdev_ops == &vdev_indirect_ops) {
2873                         spa_config_exit(zio->io_spa, SCL_VDEV, FTAG);
2874                         return (zio);
2875                 }
2876                 spa_config_exit(zio->io_spa, SCL_VDEV, FTAG);
2877
2878                 *bp = *bp_orig;
2879                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
2880                 zio->io_flags |= ZIO_FLAG_NOPWRITE;
2881         }
2882
2883         return (zio);
2884 }
2885
2886 /*
2887  * ==========================================================================
2888  * Dedup
2889  * ==========================================================================
2890  */
2891 static void
2892 zio_ddt_child_read_done(zio_t *zio)
2893 {
2894         blkptr_t *bp = zio->io_bp;
2895         ddt_entry_t *dde = zio->io_private;
2896         ddt_phys_t *ddp;
2897         zio_t *pio = zio_unique_parent(zio);
2898
2899         mutex_enter(&pio->io_lock);
2900         ddp = ddt_phys_select(dde, bp);
2901         if (zio->io_error == 0)
2902                 ddt_phys_clear(ddp);    /* this ddp doesn't need repair */
2903
2904         if (zio->io_error == 0 && dde->dde_repair_abd == NULL)
2905                 dde->dde_repair_abd = zio->io_abd;
2906         else
2907                 abd_free(zio->io_abd);
2908         mutex_exit(&pio->io_lock);
2909 }
2910
2911 static zio_t *
2912 zio_ddt_read_start(zio_t *zio)
2913 {
2914         blkptr_t *bp = zio->io_bp;
2915
2916         ASSERT(BP_GET_DEDUP(bp));
2917         ASSERT(BP_GET_PSIZE(bp) == zio->io_size);
2918         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2919
2920         if (zio->io_child_error[ZIO_CHILD_DDT]) {
2921                 ddt_t *ddt = ddt_select(zio->io_spa, bp);
2922                 ddt_entry_t *dde = ddt_repair_start(ddt, bp);
2923                 ddt_phys_t *ddp = dde->dde_phys;
2924                 ddt_phys_t *ddp_self = ddt_phys_select(dde, bp);
2925                 blkptr_t blk;
2926
2927                 ASSERT(zio->io_vsd == NULL);
2928                 zio->io_vsd = dde;
2929
2930                 if (ddp_self == NULL)
2931                         return (zio);
2932
2933                 for (int p = 0; p < DDT_PHYS_TYPES; p++, ddp++) {
2934                         if (ddp->ddp_phys_birth == 0 || ddp == ddp_self)
2935                                 continue;
2936                         ddt_bp_create(ddt->ddt_checksum, &dde->dde_key, ddp,
2937                             &blk);
2938                         zio_nowait(zio_read(zio, zio->io_spa, &blk,
2939                             abd_alloc_for_io(zio->io_size, B_TRUE),
2940                             zio->io_size, zio_ddt_child_read_done, dde,
2941                             zio->io_priority, ZIO_DDT_CHILD_FLAGS(zio) |
2942                             ZIO_FLAG_DONT_PROPAGATE, &zio->io_bookmark));
2943                 }
2944                 return (zio);
2945         }
2946
2947         zio_nowait(zio_read(zio, zio->io_spa, bp,
2948             zio->io_abd, zio->io_size, NULL, NULL, zio->io_priority,
2949             ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark));
2950
2951         return (zio);
2952 }
2953
2954 static zio_t *
2955 zio_ddt_read_done(zio_t *zio)
2956 {
2957         blkptr_t *bp = zio->io_bp;
2958
2959         if (zio_wait_for_children(zio, ZIO_CHILD_DDT_BIT, ZIO_WAIT_DONE)) {
2960                 return (NULL);
2961         }
2962
2963         ASSERT(BP_GET_DEDUP(bp));
2964         ASSERT(BP_GET_PSIZE(bp) == zio->io_size);
2965         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
2966
2967         if (zio->io_child_error[ZIO_CHILD_DDT]) {
2968                 ddt_t *ddt = ddt_select(zio->io_spa, bp);
2969                 ddt_entry_t *dde = zio->io_vsd;
2970                 if (ddt == NULL) {
2971                         ASSERT(spa_load_state(zio->io_spa) != SPA_LOAD_NONE);
2972                         return (zio);
2973                 }
2974                 if (dde == NULL) {
2975                         zio->io_stage = ZIO_STAGE_DDT_READ_START >> 1;
2976                         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_FALSE);
2977                         return (NULL);
2978                 }
2979                 if (dde->dde_repair_abd != NULL) {
2980                         abd_copy(zio->io_abd, dde->dde_repair_abd,
2981                             zio->io_size);
2982                         zio->io_child_error[ZIO_CHILD_DDT] = 0;
2983                 }
2984                 ddt_repair_done(ddt, dde);
2985                 zio->io_vsd = NULL;
2986         }
2987
2988         ASSERT(zio->io_vsd == NULL);
2989
2990         return (zio);
2991 }
2992
2993 static boolean_t
2994 zio_ddt_collision(zio_t *zio, ddt_t *ddt, ddt_entry_t *dde)
2995 {
2996         spa_t *spa = zio->io_spa;
2997         boolean_t do_raw = !!(zio->io_flags & ZIO_FLAG_RAW);
2998
2999         ASSERT(!(zio->io_bp_override && do_raw));
3000
3001         /*
3002          * Note: we compare the original data, not the transformed data,
3003          * because when zio->io_bp is an override bp, we will not have
3004          * pushed the I/O transforms.  That's an important optimization
3005          * because otherwise we'd compress/encrypt all dmu_sync() data twice.
3006          * However, we should never get a raw, override zio so in these
3007          * cases we can compare the io_abd directly. This is useful because
3008          * it allows us to do dedup verification even if we don't have access
3009          * to the original data (for instance, if the encryption keys aren't
3010          * loaded).
3011          */
3012
3013         for (int p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) {
3014                 zio_t *lio = dde->dde_lead_zio[p];
3015
3016                 if (lio != NULL && do_raw) {
3017                         return (lio->io_size != zio->io_size ||
3018                             abd_cmp(zio->io_abd, lio->io_abd) != 0);
3019                 } else if (lio != NULL) {
3020                         return (lio->io_orig_size != zio->io_orig_size ||
3021                             abd_cmp(zio->io_orig_abd, lio->io_orig_abd) != 0);
3022                 }
3023         }
3024
3025         for (int p = DDT_PHYS_SINGLE; p <= DDT_PHYS_TRIPLE; p++) {
3026                 ddt_phys_t *ddp = &dde->dde_phys[p];
3027
3028                 if (ddp->ddp_phys_birth != 0 && do_raw) {
3029                         blkptr_t blk = *zio->io_bp;
3030                         uint64_t psize;
3031                         abd_t *tmpabd;
3032                         int error;
3033
3034                         ddt_bp_fill(ddp, &blk, ddp->ddp_phys_birth);
3035                         psize = BP_GET_PSIZE(&blk);
3036
3037                         if (psize != zio->io_size)
3038                                 return (B_TRUE);
3039
3040                         ddt_exit(ddt);
3041
3042                         tmpabd = abd_alloc_for_io(psize, B_TRUE);
3043
3044                         error = zio_wait(zio_read(NULL, spa, &blk, tmpabd,
3045                             psize, NULL, NULL, ZIO_PRIORITY_SYNC_READ,
3046                             ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE |
3047                             ZIO_FLAG_RAW, &zio->io_bookmark));
3048
3049                         if (error == 0) {
3050                                 if (abd_cmp(tmpabd, zio->io_abd) != 0)
3051                                         error = SET_ERROR(ENOENT);
3052                         }
3053
3054                         abd_free(tmpabd);
3055                         ddt_enter(ddt);
3056                         return (error != 0);
3057                 } else if (ddp->ddp_phys_birth != 0) {
3058                         arc_buf_t *abuf = NULL;
3059                         arc_flags_t aflags = ARC_FLAG_WAIT;
3060                         blkptr_t blk = *zio->io_bp;
3061                         int error;
3062
3063                         ddt_bp_fill(ddp, &blk, ddp->ddp_phys_birth);
3064
3065                         if (BP_GET_LSIZE(&blk) != zio->io_orig_size)
3066                                 return (B_TRUE);
3067
3068                         ddt_exit(ddt);
3069
3070                         error = arc_read(NULL, spa, &blk,
3071                             arc_getbuf_func, &abuf, ZIO_PRIORITY_SYNC_READ,
3072                             ZIO_FLAG_CANFAIL | ZIO_FLAG_SPECULATIVE,
3073                             &aflags, &zio->io_bookmark);
3074
3075                         if (error == 0) {
3076                                 if (abd_cmp_buf(zio->io_orig_abd, abuf->b_data,
3077                                     zio->io_orig_size) != 0)
3078                                         error = SET_ERROR(ENOENT);
3079                                 arc_buf_destroy(abuf, &abuf);
3080                         }
3081
3082                         ddt_enter(ddt);
3083                         return (error != 0);
3084                 }
3085         }
3086
3087         return (B_FALSE);
3088 }
3089
3090 static void
3091 zio_ddt_child_write_ready(zio_t *zio)
3092 {
3093         int p = zio->io_prop.zp_copies;
3094         ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp);
3095         ddt_entry_t *dde = zio->io_private;
3096         ddt_phys_t *ddp = &dde->dde_phys[p];
3097         zio_t *pio;
3098
3099         if (zio->io_error)
3100                 return;
3101
3102         ddt_enter(ddt);
3103
3104         ASSERT(dde->dde_lead_zio[p] == zio);
3105
3106         ddt_phys_fill(ddp, zio->io_bp);
3107
3108         zio_link_t *zl = NULL;
3109         while ((pio = zio_walk_parents(zio, &zl)) != NULL)
3110                 ddt_bp_fill(ddp, pio->io_bp, zio->io_txg);
3111
3112         ddt_exit(ddt);
3113 }
3114
3115 static void
3116 zio_ddt_child_write_done(zio_t *zio)
3117 {
3118         int p = zio->io_prop.zp_copies;
3119         ddt_t *ddt = ddt_select(zio->io_spa, zio->io_bp);
3120         ddt_entry_t *dde = zio->io_private;
3121         ddt_phys_t *ddp = &dde->dde_phys[p];
3122
3123         ddt_enter(ddt);
3124
3125         ASSERT(ddp->ddp_refcnt == 0);
3126         ASSERT(dde->dde_lead_zio[p] == zio);
3127         dde->dde_lead_zio[p] = NULL;
3128
3129         if (zio->io_error == 0) {
3130                 zio_link_t *zl = NULL;
3131                 while (zio_walk_parents(zio, &zl) != NULL)
3132                         ddt_phys_addref(ddp);
3133         } else {
3134                 ddt_phys_clear(ddp);
3135         }
3136
3137         ddt_exit(ddt);
3138 }
3139
3140 static zio_t *
3141 zio_ddt_write(zio_t *zio)
3142 {
3143         spa_t *spa = zio->io_spa;
3144         blkptr_t *bp = zio->io_bp;
3145         uint64_t txg = zio->io_txg;
3146         zio_prop_t *zp = &zio->io_prop;
3147         int p = zp->zp_copies;
3148         zio_t *cio = NULL;
3149         ddt_t *ddt = ddt_select(spa, bp);
3150         ddt_entry_t *dde;
3151         ddt_phys_t *ddp;
3152
3153         ASSERT(BP_GET_DEDUP(bp));
3154         ASSERT(BP_GET_CHECKSUM(bp) == zp->zp_checksum);
3155         ASSERT(BP_IS_HOLE(bp) || zio->io_bp_override);
3156         ASSERT(!(zio->io_bp_override && (zio->io_flags & ZIO_FLAG_RAW)));
3157
3158         ddt_enter(ddt);
3159         dde = ddt_lookup(ddt, bp, B_TRUE);
3160         ddp = &dde->dde_phys[p];
3161
3162         if (zp->zp_dedup_verify && zio_ddt_collision(zio, ddt, dde)) {
3163                 /*
3164                  * If we're using a weak checksum, upgrade to a strong checksum
3165                  * and try again.  If we're already using a strong checksum,
3166                  * we can't resolve it, so just convert to an ordinary write.
3167                  * (And automatically e-mail a paper to Nature?)
3168                  */
3169                 if (!(zio_checksum_table[zp->zp_checksum].ci_flags &
3170                     ZCHECKSUM_FLAG_DEDUP)) {
3171                         zp->zp_checksum = spa_dedup_checksum(spa);
3172                         zio_pop_transforms(zio);
3173                         zio->io_stage = ZIO_STAGE_OPEN;
3174                         BP_ZERO(bp);
3175                 } else {
3176                         zp->zp_dedup = B_FALSE;
3177                         BP_SET_DEDUP(bp, B_FALSE);
3178                 }
3179                 ASSERT(!BP_GET_DEDUP(bp));
3180                 zio->io_pipeline = ZIO_WRITE_PIPELINE;
3181                 ddt_exit(ddt);
3182                 return (zio);
3183         }
3184
3185         if (ddp->ddp_phys_birth != 0 || dde->dde_lead_zio[p] != NULL) {
3186                 if (ddp->ddp_phys_birth != 0)
3187                         ddt_bp_fill(ddp, bp, txg);
3188                 if (dde->dde_lead_zio[p] != NULL)
3189                         zio_add_child(zio, dde->dde_lead_zio[p]);
3190                 else
3191                         ddt_phys_addref(ddp);
3192         } else if (zio->io_bp_override) {
3193                 ASSERT(bp->blk_birth == txg);
3194                 ASSERT(BP_EQUAL(bp, zio->io_bp_override));
3195                 ddt_phys_fill(ddp, bp);
3196                 ddt_phys_addref(ddp);
3197         } else {
3198                 cio = zio_write(zio, spa, txg, bp, zio->io_orig_abd,
3199                     zio->io_orig_size, zio->io_orig_size, zp,
3200                     zio_ddt_child_write_ready, NULL, NULL,
3201                     zio_ddt_child_write_done, dde, zio->io_priority,
3202                     ZIO_DDT_CHILD_FLAGS(zio), &zio->io_bookmark);
3203
3204                 zio_push_transform(cio, zio->io_abd, zio->io_size, 0, NULL);
3205                 dde->dde_lead_zio[p] = cio;
3206         }
3207
3208         ddt_exit(ddt);
3209
3210         if (cio)
3211                 zio_nowait(cio);
3212
3213         return (zio);
3214 }
3215
3216 ddt_entry_t *freedde; /* for debugging */
3217
3218 static zio_t *
3219 zio_ddt_free(zio_t *zio)
3220 {
3221         spa_t *spa = zio->io_spa;
3222         blkptr_t *bp = zio->io_bp;
3223         ddt_t *ddt = ddt_select(spa, bp);
3224         ddt_entry_t *dde;
3225         ddt_phys_t *ddp;
3226
3227         ASSERT(BP_GET_DEDUP(bp));
3228         ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
3229
3230         ddt_enter(ddt);
3231         freedde = dde = ddt_lookup(ddt, bp, B_TRUE);
3232         if (dde) {
3233                 ddp = ddt_phys_select(dde, bp);
3234                 if (ddp)
3235                         ddt_phys_decref(ddp);
3236         }
3237         ddt_exit(ddt);
3238
3239         return (zio);
3240 }
3241
3242 /*
3243  * ==========================================================================
3244  * Allocate and free blocks
3245  * ==========================================================================
3246  */
3247
3248 static zio_t *
3249 zio_io_to_allocate(spa_t *spa, int allocator)
3250 {
3251         zio_t *zio;
3252
3253         ASSERT(MUTEX_HELD(&spa->spa_alloc_locks[allocator]));
3254
3255         zio = avl_first(&spa->spa_alloc_trees[allocator]);
3256         if (zio == NULL)
3257                 return (NULL);
3258
3259         ASSERT(IO_IS_ALLOCATING(zio));
3260
3261         /*
3262          * Try to place a reservation for this zio. If we're unable to
3263          * reserve then we throttle.
3264          */
3265         ASSERT3U(zio->io_allocator, ==, allocator);
3266         if (!metaslab_class_throttle_reserve(zio->io_metaslab_class,
3267             zio->io_prop.zp_copies, zio->io_allocator, zio, 0)) {
3268                 return (NULL);
3269         }
3270
3271         avl_remove(&spa->spa_alloc_trees[allocator], zio);
3272         ASSERT3U(zio->io_stage, <, ZIO_STAGE_DVA_ALLOCATE);
3273
3274         return (zio);
3275 }
3276
3277 static zio_t *
3278 zio_dva_throttle(zio_t *zio)
3279 {
3280         spa_t *spa = zio->io_spa;
3281         zio_t *nio;
3282         metaslab_class_t *mc;
3283
3284         /* locate an appropriate allocation class */
3285         mc = spa_preferred_class(spa, zio->io_size, zio->io_prop.zp_type,
3286             zio->io_prop.zp_level, zio->io_prop.zp_zpl_smallblk);
3287
3288         if (zio->io_priority == ZIO_PRIORITY_SYNC_WRITE ||
3289             !mc->mc_alloc_throttle_enabled ||
3290             zio->io_child_type == ZIO_CHILD_GANG ||
3291             zio->io_flags & ZIO_FLAG_NODATA) {
3292                 return (zio);
3293         }
3294
3295         ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
3296
3297         ASSERT3U(zio->io_queued_timestamp, >, 0);
3298         ASSERT(zio->io_stage == ZIO_STAGE_DVA_THROTTLE);
3299
3300         zbookmark_phys_t *bm = &zio->io_bookmark;
3301         /*
3302          * We want to try to use as many allocators as possible to help improve
3303          * performance, but we also want logically adjacent IOs to be physically
3304          * adjacent to improve sequential read performance. We chunk each object
3305          * into 2^20 block regions, and then hash based on the objset, object,
3306          * level, and region to accomplish both of these goals.
3307          */
3308         zio->io_allocator = cityhash4(bm->zb_objset, bm->zb_object,
3309             bm->zb_level, bm->zb_blkid >> 20) % spa->spa_alloc_count;
3310         mutex_enter(&spa->spa_alloc_locks[zio->io_allocator]);
3311         ASSERT(zio->io_type == ZIO_TYPE_WRITE);
3312         zio->io_metaslab_class = mc;
3313         avl_add(&spa->spa_alloc_trees[zio->io_allocator], zio);
3314         nio = zio_io_to_allocate(spa, zio->io_allocator);
3315         mutex_exit(&spa->spa_alloc_locks[zio->io_allocator]);
3316         return (nio);
3317 }
3318
3319 static void
3320 zio_allocate_dispatch(spa_t *spa, int allocator)
3321 {
3322         zio_t *zio;
3323
3324         mutex_enter(&spa->spa_alloc_locks[allocator]);
3325         zio = zio_io_to_allocate(spa, allocator);
3326         mutex_exit(&spa->spa_alloc_locks[allocator]);
3327         if (zio == NULL)
3328                 return;
3329
3330         ASSERT3U(zio->io_stage, ==, ZIO_STAGE_DVA_THROTTLE);
3331         ASSERT0(zio->io_error);
3332         zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE, B_TRUE);
3333 }
3334
3335 static zio_t *
3336 zio_dva_allocate(zio_t *zio)
3337 {
3338         spa_t *spa = zio->io_spa;
3339         metaslab_class_t *mc;
3340         blkptr_t *bp = zio->io_bp;
3341         int error;
3342         int flags = 0;
3343
3344         if (zio->io_gang_leader == NULL) {
3345                 ASSERT(zio->io_child_type > ZIO_CHILD_GANG);
3346                 zio->io_gang_leader = zio;
3347         }
3348
3349         ASSERT(BP_IS_HOLE(bp));
3350         ASSERT0(BP_GET_NDVAS(bp));
3351         ASSERT3U(zio->io_prop.zp_copies, >, 0);
3352         ASSERT3U(zio->io_prop.zp_copies, <=, spa_max_replication(spa));
3353         ASSERT3U(zio->io_size, ==, BP_GET_PSIZE(bp));
3354
3355         flags |= (zio->io_flags & ZIO_FLAG_FASTWRITE) ? METASLAB_FASTWRITE : 0;
3356         if (zio->io_flags & ZIO_FLAG_NODATA)
3357                 flags |= METASLAB_DONT_THROTTLE;
3358         if (zio->io_flags & ZIO_FLAG_GANG_CHILD)
3359                 flags |= METASLAB_GANG_CHILD;
3360         if (zio->io_priority == ZIO_PRIORITY_ASYNC_WRITE)
3361                 flags |= METASLAB_ASYNC_ALLOC;
3362
3363         /*
3364          * if not already chosen, locate an appropriate allocation class
3365          */
3366         mc = zio->io_metaslab_class;
3367         if (mc == NULL) {
3368                 mc = spa_preferred_class(spa, zio->io_size,
3369                     zio->io_prop.zp_type, zio->io_prop.zp_level,
3370                     zio->io_prop.zp_zpl_smallblk);
3371                 zio->io_metaslab_class = mc;
3372         }
3373
3374         error = metaslab_alloc(spa, mc, zio->io_size, bp,
3375             zio->io_prop.zp_copies, zio->io_txg, NULL, flags,
3376             &zio->io_alloc_list, zio, zio->io_allocator);
3377
3378         /*
3379          * Fallback to normal class when an alloc class is full
3380          */
3381         if (error == ENOSPC && mc != spa_normal_class(spa)) {
3382                 /*
3383                  * If throttling, transfer reservation over to normal class.
3384                  * The io_allocator slot can remain the same even though we
3385                  * are switching classes.
3386                  */
3387                 if (mc->mc_alloc_throttle_enabled &&
3388                     (zio->io_flags & ZIO_FLAG_IO_ALLOCATING)) {
3389                         metaslab_class_throttle_unreserve(mc,
3390                             zio->io_prop.zp_copies, zio->io_allocator, zio);
3391                         zio->io_flags &= ~ZIO_FLAG_IO_ALLOCATING;
3392
3393                         mc = spa_normal_class(spa);
3394                         VERIFY(metaslab_class_throttle_reserve(mc,
3395                             zio->io_prop.zp_copies, zio->io_allocator, zio,
3396                             flags | METASLAB_MUST_RESERVE));
3397                 } else {
3398                         mc = spa_normal_class(spa);
3399                 }
3400                 zio->io_metaslab_class = mc;
3401
3402                 error = metaslab_alloc(spa, mc, zio->io_size, bp,
3403                     zio->io_prop.zp_copies, zio->io_txg, NULL, flags,
3404                     &zio->io_alloc_list, zio, zio->io_allocator);
3405         }
3406
3407         if (error != 0) {
3408                 zfs_dbgmsg("%s: metaslab allocation failure: zio %px, "
3409                     "size %llu, error %d", spa_name(spa), zio, zio->io_size,
3410                     error);
3411                 if (error == ENOSPC && zio->io_size > SPA_MINBLOCKSIZE)
3412                         return (zio_write_gang_block(zio));
3413                 zio->io_error = error;
3414         }
3415
3416         return (zio);
3417 }
3418
3419 static zio_t *
3420 zio_dva_free(zio_t *zio)
3421 {
3422         metaslab_free(zio->io_spa, zio->io_bp, zio->io_txg, B_FALSE);
3423
3424         return (zio);
3425 }
3426
3427 static zio_t *
3428 zio_dva_claim(zio_t *zio)
3429 {
3430         int error;
3431
3432         error = metaslab_claim(zio->io_spa, zio->io_bp, zio->io_txg);
3433         if (error)
3434                 zio->io_error = error;
3435
3436         return (zio);
3437 }
3438
3439 /*
3440  * Undo an allocation.  This is used by zio_done() when an I/O fails
3441  * and we want to give back the block we just allocated.
3442  * This handles both normal blocks and gang blocks.
3443  */
3444 static void
3445 zio_dva_unallocate(zio_t *zio, zio_gang_node_t *gn, blkptr_t *bp)
3446 {
3447         ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp));
3448         ASSERT(zio->io_bp_override == NULL);
3449
3450         if (!BP_IS_HOLE(bp))
3451                 metaslab_free(zio->io_spa, bp, bp->blk_birth, B_TRUE);
3452
3453         if (gn != NULL) {
3454                 for (int g = 0; g < SPA_GBH_NBLKPTRS; g++) {
3455                         zio_dva_unallocate(zio, gn->gn_child[g],
3456                             &gn->gn_gbh->zg_blkptr[g]);
3457                 }
3458         }
3459 }
3460
3461 /*
3462  * Try to allocate an intent log block.  Return 0 on success, errno on failure.
3463  */
3464 int
3465 zio_alloc_zil(spa_t *spa, objset_t *os, uint64_t txg, blkptr_t *new_bp,
3466     uint64_t size, boolean_t *slog)
3467 {
3468         int error = 1;
3469         zio_alloc_list_t io_alloc_list;
3470
3471         ASSERT(txg > spa_syncing_txg(spa));
3472
3473         metaslab_trace_init(&io_alloc_list);
3474
3475         /*
3476          * Block pointer fields are useful to metaslabs for stats and debugging.
3477          * Fill in the obvious ones before calling into metaslab_alloc().
3478          */
3479         BP_SET_TYPE(new_bp, DMU_OT_INTENT_LOG);
3480         BP_SET_PSIZE(new_bp, size);
3481         BP_SET_LEVEL(new_bp, 0);
3482
3483         /*
3484          * When allocating a zil block, we don't have information about
3485          * the final destination of the block except the objset it's part
3486          * of, so we just hash the objset ID to pick the allocator to get
3487          * some parallelism.
3488          */
3489         error = metaslab_alloc(spa, spa_log_class(spa), size, new_bp, 1,
3490             txg, NULL, METASLAB_FASTWRITE, &io_alloc_list, NULL,
3491             cityhash4(0, 0, 0, os->os_dsl_dataset->ds_object) %
3492             spa->spa_alloc_count);
3493         if (error == 0) {
3494                 *slog = TRUE;
3495         } else {
3496                 error = metaslab_alloc(spa, spa_normal_class(spa), size,
3497                     new_bp, 1, txg, NULL, METASLAB_FASTWRITE,
3498                     &io_alloc_list, NULL, cityhash4(0, 0, 0,
3499                     os->os_dsl_dataset->ds_object) % spa->spa_alloc_count);
3500                 if (error == 0)
3501                         *slog = FALSE;
3502         }
3503         metaslab_trace_fini(&io_alloc_list);
3504
3505         if (error == 0) {
3506                 BP_SET_LSIZE(new_bp, size);
3507                 BP_SET_PSIZE(new_bp, size);
3508                 BP_SET_COMPRESS(new_bp, ZIO_COMPRESS_OFF);
3509                 BP_SET_CHECKSUM(new_bp,
3510                     spa_version(spa) >= SPA_VERSION_SLIM_ZIL
3511                     ? ZIO_CHECKSUM_ZILOG2 : ZIO_CHECKSUM_ZILOG);
3512                 BP_SET_TYPE(new_bp, DMU_OT_INTENT_LOG);
3513                 BP_SET_LEVEL(new_bp, 0);
3514                 BP_SET_DEDUP(new_bp, 0);
3515                 BP_SET_BYTEORDER(new_bp, ZFS_HOST_BYTEORDER);
3516
3517                 /*
3518                  * encrypted blocks will require an IV and salt. We generate
3519                  * these now since we will not be rewriting the bp at
3520                  * rewrite time.
3521                  */
3522                 if (os->os_encrypted) {
3523                         uint8_t iv[ZIO_DATA_IV_LEN];
3524                         uint8_t salt[ZIO_DATA_SALT_LEN];
3525
3526                         BP_SET_CRYPT(new_bp, B_TRUE);
3527                         VERIFY0(spa_crypt_get_salt(spa,
3528                             dmu_objset_id(os), salt));
3529                         VERIFY0(zio_crypt_generate_iv(iv));
3530
3531                         zio_crypt_encode_params_bp(new_bp, salt, iv);
3532                 }
3533         } else {
3534                 zfs_dbgmsg("%s: zil block allocation failure: "
3535                     "size %llu, error %d", spa_name(spa), size, error);
3536         }
3537
3538         return (error);
3539 }
3540
3541 /*
3542  * ==========================================================================
3543  * Read and write to physical devices
3544  * ==========================================================================
3545  */
3546
3547 /*
3548  * Issue an I/O to the underlying vdev. Typically the issue pipeline
3549  * stops after this stage and will resume upon I/O completion.
3550  * However, there are instances where the vdev layer may need to
3551  * continue the pipeline when an I/O was not issued. Since the I/O
3552  * that was sent to the vdev layer might be different than the one
3553  * currently active in the pipeline (see vdev_queue_io()), we explicitly
3554  * force the underlying vdev layers to call either zio_execute() or
3555  * zio_interrupt() to ensure that the pipeline continues with the correct I/O.
3556  */
3557 static zio_t *
3558 zio_vdev_io_start(zio_t *zio)
3559 {
3560         vdev_t *vd = zio->io_vd;
3561         uint64_t align;
3562         spa_t *spa = zio->io_spa;
3563
3564         zio->io_delay = 0;
3565
3566         ASSERT(zio->io_error == 0);
3567         ASSERT(zio->io_child_error[ZIO_CHILD_VDEV] == 0);
3568
3569         if (vd == NULL) {
3570                 if (!(zio->io_flags & ZIO_FLAG_CONFIG_WRITER))
3571                         spa_config_enter(spa, SCL_ZIO, zio, RW_READER);
3572
3573                 /*
3574                  * The mirror_ops handle multiple DVAs in a single BP.
3575                  */
3576                 vdev_mirror_ops.vdev_op_io_start(zio);
3577                 return (NULL);
3578         }
3579
3580         ASSERT3P(zio->io_logical, !=, zio);
3581         if (zio->io_type == ZIO_TYPE_WRITE) {
3582                 ASSERT(spa->spa_trust_config);
3583
3584                 /*
3585                  * Note: the code can handle other kinds of writes,
3586                  * but we don't expect them.
3587                  */
3588                 if (zio->io_vd->vdev_removing) {
3589                         ASSERT(zio->io_flags &
3590                             (ZIO_FLAG_PHYSICAL | ZIO_FLAG_SELF_HEAL |
3591                             ZIO_FLAG_RESILVER | ZIO_FLAG_INDUCE_DAMAGE));
3592                 }
3593         }
3594
3595         align = 1ULL << vd->vdev_top->vdev_ashift;
3596
3597         if (!(zio->io_flags & ZIO_FLAG_PHYSICAL) &&
3598             P2PHASE(zio->io_size, align) != 0) {
3599                 /* Transform logical writes to be a full physical block size. */
3600                 uint64_t asize = P2ROUNDUP(zio->io_size, align);
3601                 abd_t *abuf = abd_alloc_sametype(zio->io_abd, asize);
3602                 ASSERT(vd == vd->vdev_top);
3603                 if (zio->io_type == ZIO_TYPE_WRITE) {
3604                         abd_copy(abuf, zio->io_abd, zio->io_size);
3605                         abd_zero_off(abuf, zio->io_size, asize - zio->io_size);
3606                 }
3607                 zio_push_transform(zio, abuf, asize, asize, zio_subblock);
3608         }
3609
3610         /*
3611          * If this is not a physical io, make sure that it is properly aligned
3612          * before proceeding.
3613          */
3614         if (!(zio->io_flags & ZIO_FLAG_PHYSICAL)) {
3615                 ASSERT0(P2PHASE(zio->io_offset, align));
3616                 ASSERT0(P2PHASE(zio->io_size, align));
3617         } else {
3618                 /*
3619                  * For physical writes, we allow 512b aligned writes and assume
3620                  * the device will perform a read-modify-write as necessary.
3621                  */
3622                 ASSERT0(P2PHASE(zio->io_offset, SPA_MINBLOCKSIZE));
3623                 ASSERT0(P2PHASE(zio->io_size, SPA_MINBLOCKSIZE));
3624         }
3625
3626         VERIFY(zio->io_type != ZIO_TYPE_WRITE || spa_writeable(spa));
3627
3628         /*
3629          * If this is a repair I/O, and there's no self-healing involved --
3630          * that is, we're just resilvering what we expect to resilver --
3631          * then don't do the I/O unless zio's txg is actually in vd's DTL.
3632          * This prevents spurious resilvering.
3633          *
3634          * There are a few ways that we can end up creating these spurious
3635          * resilver i/os:
3636          *
3637          * 1. A resilver i/o will be issued if any DVA in the BP has a
3638          * dirty DTL.  The mirror code will issue resilver writes to
3639          * each DVA, including the one(s) that are not on vdevs with dirty
3640          * DTLs.
3641          *
3642          * 2. With nested replication, which happens when we have a
3643          * "replacing" or "spare" vdev that's a child of a mirror or raidz.
3644          * For example, given mirror(replacing(A+B), C), it's likely that
3645          * only A is out of date (it's the new device). In this case, we'll
3646          * read from C, then use the data to resilver A+B -- but we don't
3647          * actually want to resilver B, just A. The top-level mirror has no
3648          * way to know this, so instead we just discard unnecessary repairs
3649          * as we work our way down the vdev tree.
3650          *
3651          * 3. ZTEST also creates mirrors of mirrors, mirrors of raidz, etc.
3652          * The same logic applies to any form of nested replication: ditto
3653          * + mirror, RAID-Z + replacing, etc.
3654          *
3655          * However, indirect vdevs point off to other vdevs which may have
3656          * DTL's, so we never bypass them.  The child i/os on concrete vdevs
3657          * will be properly bypassed instead.
3658          */
3659         if ((zio->io_flags & ZIO_FLAG_IO_REPAIR) &&
3660             !(zio->io_flags & ZIO_FLAG_SELF_HEAL) &&
3661             zio->io_txg != 0 && /* not a delegated i/o */
3662             vd->vdev_ops != &vdev_indirect_ops &&
3663             !vdev_dtl_contains(vd, DTL_PARTIAL, zio->io_txg, 1)) {
3664                 ASSERT(zio->io_type == ZIO_TYPE_WRITE);
3665                 zio_vdev_io_bypass(zio);
3666                 return (zio);
3667         }
3668
3669         if (vd->vdev_ops->vdev_op_leaf && (zio->io_type == ZIO_TYPE_READ ||
3670             zio->io_type == ZIO_TYPE_WRITE || zio->io_type == ZIO_TYPE_TRIM)) {
3671
3672                 if (zio->io_type == ZIO_TYPE_READ && vdev_cache_read(zio))
3673                         return (zio);
3674
3675                 if ((zio = vdev_queue_io(zio)) == NULL)
3676                         return (NULL);
3677
3678                 if (!vdev_accessible(vd, zio)) {
3679                         zio->io_error = SET_ERROR(ENXIO);
3680                         zio_interrupt(zio);
3681                         return (NULL);
3682                 }
3683                 zio->io_delay = gethrtime();
3684         }
3685
3686         vd->vdev_ops->vdev_op_io_start(zio);
3687         return (NULL);
3688 }
3689
3690 static zio_t *
3691 zio_vdev_io_done(zio_t *zio)
3692 {
3693         vdev_t *vd = zio->io_vd;
3694         vdev_ops_t *ops = vd ? vd->vdev_ops : &vdev_mirror_ops;
3695         boolean_t unexpected_error = B_FALSE;
3696
3697         if (zio_wait_for_children(zio, ZIO_CHILD_VDEV_BIT, ZIO_WAIT_DONE)) {
3698                 return (NULL);
3699         }
3700
3701         ASSERT(zio->io_type == ZIO_TYPE_READ ||
3702             zio->io_type == ZIO_TYPE_WRITE || zio->io_type == ZIO_TYPE_TRIM);
3703
3704         if (zio->io_delay)
3705                 zio->io_delay = gethrtime() - zio->io_delay;
3706
3707         if (vd != NULL && vd->vdev_ops->vdev_op_leaf) {
3708
3709                 vdev_queue_io_done(zio);
3710
3711                 if (zio->io_type == ZIO_TYPE_WRITE)
3712                         vdev_cache_write(zio);
3713
3714                 if (zio_injection_enabled && zio->io_error == 0)
3715                         zio->io_error = zio_handle_device_injections(vd, zio,
3716                             EIO, EILSEQ);
3717
3718                 if (zio_injection_enabled && zio->io_error == 0)
3719                         zio->io_error = zio_handle_label_injection(zio, EIO);
3720
3721                 if (zio->io_error && zio->io_type != ZIO_TYPE_TRIM) {
3722                         if (!vdev_accessible(vd, zio)) {
3723                                 zio->io_error = SET_ERROR(ENXIO);
3724                         } else {
3725                                 unexpected_error = B_TRUE;
3726                         }
3727                 }
3728         }
3729
3730         ops->vdev_op_io_done(zio);
3731
3732         if (unexpected_error)
3733                 VERIFY(vdev_probe(vd, zio) == NULL);
3734
3735         return (zio);
3736 }
3737
3738 /*
3739  * This function is used to change the priority of an existing zio that is
3740  * currently in-flight. This is used by the arc to upgrade priority in the
3741  * event that a demand read is made for a block that is currently queued
3742  * as a scrub or async read IO. Otherwise, the high priority read request
3743  * would end up having to wait for the lower priority IO.
3744  */
3745 void
3746 zio_change_priority(zio_t *pio, zio_priority_t priority)
3747 {
3748         zio_t *cio, *cio_next;
3749         zio_link_t *zl = NULL;
3750
3751         ASSERT3U(priority, <, ZIO_PRIORITY_NUM_QUEUEABLE);
3752
3753         if (pio->io_vd != NULL && pio->io_vd->vdev_ops->vdev_op_leaf) {
3754                 vdev_queue_change_io_priority(pio, priority);
3755         } else {
3756                 pio->io_priority = priority;
3757         }
3758
3759         mutex_enter(&pio->io_lock);
3760         for (cio = zio_walk_children(pio, &zl); cio != NULL; cio = cio_next) {
3761                 cio_next = zio_walk_children(pio, &zl);
3762                 zio_change_priority(cio, priority);
3763         }
3764         mutex_exit(&pio->io_lock);
3765 }
3766
3767 /*
3768  * For non-raidz ZIOs, we can just copy aside the bad data read from the
3769  * disk, and use that to finish the checksum ereport later.
3770  */
3771 static void
3772 zio_vsd_default_cksum_finish(zio_cksum_report_t *zcr,
3773     const abd_t *good_buf)
3774 {
3775         /* no processing needed */
3776         zfs_ereport_finish_checksum(zcr, good_buf, zcr->zcr_cbdata, B_FALSE);
3777 }
3778
3779 /*ARGSUSED*/
3780 void
3781 zio_vsd_default_cksum_report(zio_t *zio, zio_cksum_report_t *zcr, void *ignored)
3782 {
3783         void *abd = abd_alloc_sametype(zio->io_abd, zio->io_size);
3784
3785         abd_copy(abd, zio->io_abd, zio->io_size);
3786
3787         zcr->zcr_cbinfo = zio->io_size;
3788         zcr->zcr_cbdata = abd;
3789         zcr->zcr_finish = zio_vsd_default_cksum_finish;
3790         zcr->zcr_free = zio_abd_free;
3791 }
3792
3793 static zio_t *
3794 zio_vdev_io_assess(zio_t *zio)
3795 {
3796         vdev_t *vd = zio->io_vd;
3797
3798         if (zio_wait_for_children(zio, ZIO_CHILD_VDEV_BIT, ZIO_WAIT_DONE)) {
3799                 return (NULL);
3800         }
3801
3802         if (vd == NULL && !(zio->io_flags & ZIO_FLAG_CONFIG_WRITER))
3803                 spa_config_exit(zio->io_spa, SCL_ZIO, zio);
3804
3805         if (zio->io_vsd != NULL) {
3806                 zio->io_vsd_ops->vsd_free(zio);
3807                 zio->io_vsd = NULL;
3808         }
3809
3810         if (zio_injection_enabled && zio->io_error == 0)
3811                 zio->io_error = zio_handle_fault_injection(zio, EIO);
3812
3813         /*
3814          * If the I/O failed, determine whether we should attempt to retry it.
3815          *
3816          * On retry, we cut in line in the issue queue, since we don't want
3817          * compression/checksumming/etc. work to prevent our (cheap) IO reissue.
3818          */
3819         if (zio->io_error && vd == NULL &&
3820             !(zio->io_flags & (ZIO_FLAG_DONT_RETRY | ZIO_FLAG_IO_RETRY))) {
3821                 ASSERT(!(zio->io_flags & ZIO_FLAG_DONT_QUEUE)); /* not a leaf */
3822                 ASSERT(!(zio->io_flags & ZIO_FLAG_IO_BYPASS));  /* not a leaf */
3823                 zio->io_error = 0;
3824                 zio->io_flags |= ZIO_FLAG_IO_RETRY |
3825                     ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_AGGREGATE;
3826                 zio->io_stage = ZIO_STAGE_VDEV_IO_START >> 1;
3827                 zio_taskq_dispatch(zio, ZIO_TASKQ_ISSUE,
3828                     zio_requeue_io_start_cut_in_line);
3829                 return (NULL);
3830         }
3831
3832         /*
3833          * If we got an error on a leaf device, convert it to ENXIO
3834          * if the device is not accessible at all.
3835          */
3836         if (zio->io_error && vd != NULL && vd->vdev_ops->vdev_op_leaf &&
3837             !vdev_accessible(vd, zio))
3838                 zio->io_error = SET_ERROR(ENXIO);
3839
3840         /*
3841          * If we can't write to an interior vdev (mirror or RAID-Z),
3842          * set vdev_cant_write so that we stop trying to allocate from it.
3843          */
3844         if (zio->io_error == ENXIO && zio->io_type == ZIO_TYPE_WRITE &&
3845             vd != NULL && !vd->vdev_ops->vdev_op_leaf) {
3846                 vd->vdev_cant_write = B_TRUE;
3847         }
3848
3849         /*
3850          * If a cache flush returns ENOTSUP or ENOTTY, we know that no future
3851          * attempts will ever succeed. In this case we set a persistent
3852          * boolean flag so that we don't bother with it in the future.
3853          */
3854         if ((zio->io_error == ENOTSUP || zio->io_error == ENOTTY) &&
3855             zio->io_type == ZIO_TYPE_IOCTL &&
3856             zio->io_cmd == DKIOCFLUSHWRITECACHE && vd != NULL)
3857                 vd->vdev_nowritecache = B_TRUE;
3858
3859         if (zio->io_error)
3860                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
3861
3862         if (vd != NULL && vd->vdev_ops->vdev_op_leaf &&
3863             zio->io_physdone != NULL) {
3864                 ASSERT(!(zio->io_flags & ZIO_FLAG_DELEGATED));
3865                 ASSERT(zio->io_child_type == ZIO_CHILD_VDEV);
3866                 zio->io_physdone(zio->io_logical);
3867         }
3868
3869         return (zio);
3870 }
3871
3872 void
3873 zio_vdev_io_reissue(zio_t *zio)
3874 {
3875         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START);
3876         ASSERT(zio->io_error == 0);
3877
3878         zio->io_stage >>= 1;
3879 }
3880
3881 void
3882 zio_vdev_io_redone(zio_t *zio)
3883 {
3884         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_DONE);
3885
3886         zio->io_stage >>= 1;
3887 }
3888
3889 void
3890 zio_vdev_io_bypass(zio_t *zio)
3891 {
3892         ASSERT(zio->io_stage == ZIO_STAGE_VDEV_IO_START);
3893         ASSERT(zio->io_error == 0);
3894
3895         zio->io_flags |= ZIO_FLAG_IO_BYPASS;
3896         zio->io_stage = ZIO_STAGE_VDEV_IO_ASSESS >> 1;
3897 }
3898
3899 /*
3900  * ==========================================================================
3901  * Encrypt and store encryption parameters
3902  * ==========================================================================
3903  */
3904
3905
3906 /*
3907  * This function is used for ZIO_STAGE_ENCRYPT. It is responsible for
3908  * managing the storage of encryption parameters and passing them to the
3909  * lower-level encryption functions.
3910  */
3911 static zio_t *
3912 zio_encrypt(zio_t *zio)
3913 {
3914         zio_prop_t *zp = &zio->io_prop;
3915         spa_t *spa = zio->io_spa;
3916         blkptr_t *bp = zio->io_bp;
3917         uint64_t psize = BP_GET_PSIZE(bp);
3918         uint64_t dsobj = zio->io_bookmark.zb_objset;
3919         dmu_object_type_t ot = BP_GET_TYPE(bp);
3920         void *enc_buf = NULL;
3921         abd_t *eabd = NULL;
3922         uint8_t salt[ZIO_DATA_SALT_LEN];
3923         uint8_t iv[ZIO_DATA_IV_LEN];
3924         uint8_t mac[ZIO_DATA_MAC_LEN];
3925         boolean_t no_crypt = B_FALSE;
3926
3927         /* the root zio already encrypted the data */
3928         if (zio->io_child_type == ZIO_CHILD_GANG)
3929                 return (zio);
3930
3931         /* only ZIL blocks are re-encrypted on rewrite */
3932         if (!IO_IS_ALLOCATING(zio) && ot != DMU_OT_INTENT_LOG)
3933                 return (zio);
3934
3935         if (!(zp->zp_encrypt || BP_IS_ENCRYPTED(bp))) {
3936                 BP_SET_CRYPT(bp, B_FALSE);
3937                 return (zio);
3938         }
3939
3940         /* if we are doing raw encryption set the provided encryption params */
3941         if (zio->io_flags & ZIO_FLAG_RAW_ENCRYPT) {
3942                 ASSERT0(BP_GET_LEVEL(bp));
3943                 BP_SET_CRYPT(bp, B_TRUE);
3944                 BP_SET_BYTEORDER(bp, zp->zp_byteorder);
3945                 if (ot != DMU_OT_OBJSET)
3946                         zio_crypt_encode_mac_bp(bp, zp->zp_mac);
3947
3948                 /* dnode blocks must be written out in the provided byteorder */
3949                 if (zp->zp_byteorder != ZFS_HOST_BYTEORDER &&
3950                     ot == DMU_OT_DNODE) {
3951                         void *bswap_buf = zio_buf_alloc(psize);
3952                         abd_t *babd = abd_get_from_buf(bswap_buf, psize);
3953
3954                         ASSERT3U(BP_GET_COMPRESS(bp), ==, ZIO_COMPRESS_OFF);
3955                         abd_copy_to_buf(bswap_buf, zio->io_abd, psize);
3956                         dmu_ot_byteswap[DMU_OT_BYTESWAP(ot)].ob_func(bswap_buf,
3957                             psize);
3958
3959                         abd_take_ownership_of_buf(babd, B_TRUE);
3960                         zio_push_transform(zio, babd, psize, psize, NULL);
3961                 }
3962
3963                 if (DMU_OT_IS_ENCRYPTED(ot))
3964                         zio_crypt_encode_params_bp(bp, zp->zp_salt, zp->zp_iv);
3965                 return (zio);
3966         }
3967
3968         /* indirect blocks only maintain a cksum of the lower level MACs */
3969         if (BP_GET_LEVEL(bp) > 0) {
3970                 BP_SET_CRYPT(bp, B_TRUE);
3971                 VERIFY0(zio_crypt_do_indirect_mac_checksum_abd(B_TRUE,
3972                     zio->io_orig_abd, BP_GET_LSIZE(bp), BP_SHOULD_BYTESWAP(bp),
3973                     mac));
3974                 zio_crypt_encode_mac_bp(bp, mac);
3975                 return (zio);
3976         }
3977
3978         /*
3979          * Objset blocks are a special case since they have 2 256-bit MACs
3980          * embedded within them.
3981          */
3982         if (ot == DMU_OT_OBJSET) {
3983                 ASSERT0(DMU_OT_IS_ENCRYPTED(ot));
3984                 ASSERT3U(BP_GET_COMPRESS(bp), ==, ZIO_COMPRESS_OFF);
3985                 BP_SET_CRYPT(bp, B_TRUE);
3986                 VERIFY0(spa_do_crypt_objset_mac_abd(B_TRUE, spa, dsobj,
3987                     zio->io_abd, psize, BP_SHOULD_BYTESWAP(bp)));
3988                 return (zio);
3989         }
3990
3991         /* unencrypted object types are only authenticated with a MAC */
3992         if (!DMU_OT_IS_ENCRYPTED(ot)) {
3993                 BP_SET_CRYPT(bp, B_TRUE);
3994                 VERIFY0(spa_do_crypt_mac_abd(B_TRUE, spa, dsobj,
3995                     zio->io_abd, psize, mac));
3996                 zio_crypt_encode_mac_bp(bp, mac);
3997                 return (zio);
3998         }
3999
4000         /*
4001          * Later passes of sync-to-convergence may decide to rewrite data
4002          * in place to avoid more disk reallocations. This presents a problem
4003          * for encryption because this constitutes rewriting the new data with
4004          * the same encryption key and IV. However, this only applies to blocks
4005          * in the MOS (particularly the spacemaps) and we do not encrypt the
4006          * MOS. We assert that the zio is allocating or an intent log write
4007          * to enforce this.
4008          */
4009         ASSERT(IO_IS_ALLOCATING(zio) || ot == DMU_OT_INTENT_LOG);
4010         ASSERT(BP_GET_LEVEL(bp) == 0 || ot == DMU_OT_INTENT_LOG);
4011         ASSERT(spa_feature_is_active(spa, SPA_FEATURE_ENCRYPTION));
4012         ASSERT3U(psize, !=, 0);
4013
4014         enc_buf = zio_buf_alloc(psize);
4015         eabd = abd_get_from_buf(enc_buf, psize);
4016         abd_take_ownership_of_buf(eabd, B_TRUE);
4017
4018         /*
4019          * For an explanation of what encryption parameters are stored
4020          * where, see the block comment in zio_crypt.c.
4021          */
4022         if (ot == DMU_OT_INTENT_LOG) {
4023                 zio_crypt_decode_params_bp(bp, salt, iv);
4024         } else {
4025                 BP_SET_CRYPT(bp, B_TRUE);
4026         }
4027
4028         /* Perform the encryption. This should not fail */
4029         VERIFY0(spa_do_crypt_abd(B_TRUE, spa, &zio->io_bookmark,
4030             BP_GET_TYPE(bp), BP_GET_DEDUP(bp), BP_SHOULD_BYTESWAP(bp),
4031             salt, iv, mac, psize, zio->io_abd, eabd, &no_crypt));
4032
4033         /* encode encryption metadata into the bp */
4034         if (ot == DMU_OT_INTENT_LOG) {
4035                 /*
4036                  * ZIL blocks store the MAC in the embedded checksum, so the
4037                  * transform must always be applied.
4038                  */
4039                 zio_crypt_encode_mac_zil(enc_buf, mac);
4040                 zio_push_transform(zio, eabd, psize, psize, NULL);
4041         } else {
4042                 BP_SET_CRYPT(bp, B_TRUE);
4043                 zio_crypt_encode_params_bp(bp, salt, iv);
4044                 zio_crypt_encode_mac_bp(bp, mac);
4045
4046                 if (no_crypt) {
4047                         ASSERT3U(ot, ==, DMU_OT_DNODE);
4048                         abd_free(eabd);
4049                 } else {
4050                         zio_push_transform(zio, eabd, psize, psize, NULL);
4051                 }
4052         }
4053
4054         return (zio);
4055 }
4056
4057 /*
4058  * ==========================================================================
4059  * Generate and verify checksums
4060  * ==========================================================================
4061  */
4062 static zio_t *
4063 zio_checksum_generate(zio_t *zio)
4064 {
4065         blkptr_t *bp = zio->io_bp;
4066         enum zio_checksum checksum;
4067
4068         if (bp == NULL) {
4069                 /*
4070                  * This is zio_write_phys().
4071                  * We're either generating a label checksum, or none at all.
4072                  */
4073                 checksum = zio->io_prop.zp_checksum;
4074
4075                 if (checksum == ZIO_CHECKSUM_OFF)
4076                         return (zio);
4077
4078                 ASSERT(checksum == ZIO_CHECKSUM_LABEL);
4079         } else {
4080                 if (BP_IS_GANG(bp) && zio->io_child_type == ZIO_CHILD_GANG) {
4081                         ASSERT(!IO_IS_ALLOCATING(zio));
4082                         checksum = ZIO_CHECKSUM_GANG_HEADER;
4083                 } else {
4084                         checksum = BP_GET_CHECKSUM(bp);
4085                 }
4086         }
4087
4088         zio_checksum_compute(zio, checksum, zio->io_abd, zio->io_size);
4089
4090         return (zio);
4091 }
4092
4093 static zio_t *
4094 zio_checksum_verify(zio_t *zio)
4095 {
4096         zio_bad_cksum_t info;
4097         blkptr_t *bp = zio->io_bp;
4098         int error;
4099
4100         ASSERT(zio->io_vd != NULL);
4101
4102         if (bp == NULL) {
4103                 /*
4104                  * This is zio_read_phys().
4105                  * We're either verifying a label checksum, or nothing at all.
4106                  */
4107                 if (zio->io_prop.zp_checksum == ZIO_CHECKSUM_OFF)
4108                         return (zio);
4109
4110                 ASSERT(zio->io_prop.zp_checksum == ZIO_CHECKSUM_LABEL);
4111         }
4112
4113         if ((error = zio_checksum_error(zio, &info)) != 0) {
4114                 zio->io_error = error;
4115                 if (error == ECKSUM &&
4116                     !(zio->io_flags & ZIO_FLAG_SPECULATIVE)) {
4117                         mutex_enter(&zio->io_vd->vdev_stat_lock);
4118                         zio->io_vd->vdev_stat.vs_checksum_errors++;
4119                         mutex_exit(&zio->io_vd->vdev_stat_lock);
4120
4121                         zfs_ereport_start_checksum(zio->io_spa,
4122                             zio->io_vd, &zio->io_bookmark, zio,
4123                             zio->io_offset, zio->io_size, NULL, &info);
4124                 }
4125         }
4126
4127         return (zio);
4128 }
4129
4130 /*
4131  * Called by RAID-Z to ensure we don't compute the checksum twice.
4132  */
4133 void
4134 zio_checksum_verified(zio_t *zio)
4135 {
4136         zio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY;
4137 }
4138
4139 /*
4140  * ==========================================================================
4141  * Error rank.  Error are ranked in the order 0, ENXIO, ECKSUM, EIO, other.
4142  * An error of 0 indicates success.  ENXIO indicates whole-device failure,
4143  * which may be transient (e.g. unplugged) or permanent.  ECKSUM and EIO
4144  * indicate errors that are specific to one I/O, and most likely permanent.
4145  * Any other error is presumed to be worse because we weren't expecting it.
4146  * ==========================================================================
4147  */
4148 int
4149 zio_worst_error(int e1, int e2)
4150 {
4151         static int zio_error_rank[] = { 0, ENXIO, ECKSUM, EIO };
4152         int r1, r2;
4153
4154         for (r1 = 0; r1 < sizeof (zio_error_rank) / sizeof (int); r1++)
4155                 if (e1 == zio_error_rank[r1])
4156                         break;
4157
4158         for (r2 = 0; r2 < sizeof (zio_error_rank) / sizeof (int); r2++)
4159                 if (e2 == zio_error_rank[r2])
4160                         break;
4161
4162         return (r1 > r2 ? e1 : e2);
4163 }
4164
4165 /*
4166  * ==========================================================================
4167  * I/O completion
4168  * ==========================================================================
4169  */
4170 static zio_t *
4171 zio_ready(zio_t *zio)
4172 {
4173         blkptr_t *bp = zio->io_bp;
4174         zio_t *pio, *pio_next;
4175         zio_link_t *zl = NULL;
4176
4177         if (zio_wait_for_children(zio, ZIO_CHILD_GANG_BIT | ZIO_CHILD_DDT_BIT,
4178             ZIO_WAIT_READY)) {
4179                 return (NULL);
4180         }
4181
4182         if (zio->io_ready) {
4183                 ASSERT(IO_IS_ALLOCATING(zio));
4184                 ASSERT(bp->blk_birth == zio->io_txg || BP_IS_HOLE(bp) ||
4185                     (zio->io_flags & ZIO_FLAG_NOPWRITE));
4186                 ASSERT(zio->io_children[ZIO_CHILD_GANG][ZIO_WAIT_READY] == 0);
4187
4188                 zio->io_ready(zio);
4189         }
4190
4191         if (bp != NULL && bp != &zio->io_bp_copy)
4192                 zio->io_bp_copy = *bp;
4193
4194         if (zio->io_error != 0) {
4195                 zio->io_pipeline = ZIO_INTERLOCK_PIPELINE;
4196
4197                 if (zio->io_flags & ZIO_FLAG_IO_ALLOCATING) {
4198                         ASSERT(IO_IS_ALLOCATING(zio));
4199                         ASSERT(zio->io_priority == ZIO_PRIORITY_ASYNC_WRITE);
4200                         ASSERT(zio->io_metaslab_class != NULL);
4201
4202                         /*
4203                          * We were unable to allocate anything, unreserve and
4204                          * issue the next I/O to allocate.
4205                          */
4206                         metaslab_class_throttle_unreserve(
4207                             zio->io_metaslab_class, zio->io_prop.zp_copies,
4208                             zio->io_allocator, zio);
4209                         zio_allocate_dispatch(zio->io_spa, zio->io_allocator);
4210                 }
4211         }
4212
4213         mutex_enter(&zio->io_lock);
4214         zio->io_state[ZIO_WAIT_READY] = 1;
4215         pio = zio_walk_parents(zio, &zl);
4216         mutex_exit(&zio->io_lock);
4217
4218         /*
4219          * As we notify zio's parents, new parents could be added.
4220          * New parents go to the head of zio's io_parent_list, however,
4221          * so we will (correctly) not notify them.  The remainder of zio's
4222          * io_parent_list, from 'pio_next' onward, cannot change because
4223          * all parents must wait for us to be done before they can be done.
4224          */
4225         for (; pio != NULL; pio = pio_next) {
4226                 pio_next = zio_walk_parents(zio, &zl);
4227                 zio_notify_parent(pio, zio, ZIO_WAIT_READY, NULL);
4228         }
4229
4230         if (zio->io_flags & ZIO_FLAG_NODATA) {
4231                 if (BP_IS_GANG(bp)) {
4232                         zio->io_flags &= ~ZIO_FLAG_NODATA;
4233                 } else {
4234                         ASSERT((uintptr_t)zio->io_abd < SPA_MAXBLOCKSIZE);
4235                         zio->io_pipeline &= ~ZIO_VDEV_IO_STAGES;
4236                 }
4237         }
4238
4239         if (zio_injection_enabled &&
4240             zio->io_spa->spa_syncing_txg == zio->io_txg)
4241                 zio_handle_ignored_writes(zio);
4242
4243         return (zio);
4244 }
4245
4246 /*
4247  * Update the allocation throttle accounting.
4248  */
4249 static void
4250 zio_dva_throttle_done(zio_t *zio)
4251 {
4252         ASSERTV(zio_t *lio = zio->io_logical);
4253         zio_t *pio = zio_unique_parent(zio);
4254         vdev_t *vd = zio->io_vd;
4255         int flags = METASLAB_ASYNC_ALLOC;
4256
4257         ASSERT3P(zio->io_bp, !=, NULL);
4258         ASSERT3U(zio->io_type, ==, ZIO_TYPE_WRITE);
4259         ASSERT3U(zio->io_priority, ==, ZIO_PRIORITY_ASYNC_WRITE);
4260         ASSERT3U(zio->io_child_type, ==, ZIO_CHILD_VDEV);
4261         ASSERT(vd != NULL);
4262         ASSERT3P(vd, ==, vd->vdev_top);
4263         ASSERT(zio_injection_enabled || !(zio->io_flags & ZIO_FLAG_IO_RETRY));
4264         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REPAIR));
4265         ASSERT(zio->io_flags & ZIO_FLAG_IO_ALLOCATING);
4266         ASSERT(!(lio->io_flags & ZIO_FLAG_IO_REWRITE));
4267         ASSERT(!(lio->io_orig_flags & ZIO_FLAG_NODATA));
4268
4269         /*
4270          * Parents of gang children can have two flavors -- ones that
4271          * allocated the gang header (will have ZIO_FLAG_IO_REWRITE set)
4272          * and ones that allocated the constituent blocks. The allocation
4273          * throttle needs to know the allocating parent zio so we must find
4274          * it here.
4275          */
4276         if (pio->io_child_type == ZIO_CHILD_GANG) {
4277                 /*
4278                  * If our parent is a rewrite gang child then our grandparent
4279                  * would have been the one that performed the allocation.
4280                  */
4281                 if (pio->io_flags & ZIO_FLAG_IO_REWRITE)
4282                         pio = zio_unique_parent(pio);
4283                 flags |= METASLAB_GANG_CHILD;
4284         }
4285
4286         ASSERT(IO_IS_ALLOCATING(pio));
4287         ASSERT3P(zio, !=, zio->io_logical);
4288         ASSERT(zio->io_logical != NULL);
4289         ASSERT(!(zio->io_flags & ZIO_FLAG_IO_REPAIR));
4290         ASSERT0(zio->io_flags & ZIO_FLAG_NOPWRITE);
4291         ASSERT(zio->io_metaslab_class != NULL);
4292
4293         mutex_enter(&pio->io_lock);
4294         metaslab_group_alloc_decrement(zio->io_spa, vd->vdev_id, pio, flags,
4295             pio->io_allocator, B_TRUE);
4296         mutex_exit(&pio->io_lock);
4297
4298         metaslab_class_throttle_unreserve(zio->io_metaslab_class, 1,
4299             pio->io_allocator, pio);
4300
4301         /*
4302          * Call into the pipeline to see if there is more work that
4303          * needs to be done. If there is work to be done it will be
4304          * dispatched to another taskq thread.
4305          */
4306         zio_allocate_dispatch(zio->io_spa, pio->io_allocator);
4307 }
4308
4309 static zio_t *
4310 zio_done(zio_t *zio)
4311 {
4312         /*
4313          * Always attempt to keep stack usage minimal here since
4314          * we can be called recursively up to 19 levels deep.
4315          */
4316         const uint64_t psize = zio->io_size;
4317         zio_t *pio, *pio_next;
4318         zio_link_t *zl = NULL;
4319
4320         /*
4321          * If our children haven't all completed,
4322          * wait for them and then repeat this pipeline stage.
4323          */
4324         if (zio_wait_for_children(zio, ZIO_CHILD_ALL_BITS, ZIO_WAIT_DONE)) {
4325                 return (NULL);
4326         }
4327
4328         /*
4329          * If the allocation throttle is enabled, then update the accounting.
4330          * We only track child I/Os that are part of an allocating async
4331          * write. We must do this since the allocation is performed
4332          * by the logical I/O but the actual write is done by child I/Os.
4333          */
4334         if (zio->io_flags & ZIO_FLAG_IO_ALLOCATING &&
4335             zio->io_child_type == ZIO_CHILD_VDEV) {
4336                 ASSERT(zio->io_metaslab_class != NULL);
4337                 ASSERT(zio->io_metaslab_class->mc_alloc_throttle_enabled);
4338                 zio_dva_throttle_done(zio);
4339         }
4340
4341         /*
4342          * If the allocation throttle is enabled, verify that
4343          * we have decremented the refcounts for every I/O that was throttled.
4344          */
4345         if (zio->io_flags & ZIO_FLAG_IO_ALLOCATING) {
4346                 ASSERT(zio->io_type == ZIO_TYPE_WRITE);
4347                 ASSERT(zio->io_priority == ZIO_PRIORITY_ASYNC_WRITE);
4348                 ASSERT(zio->io_bp != NULL);
4349
4350                 metaslab_group_alloc_verify(zio->io_spa, zio->io_bp, zio,
4351                     zio->io_allocator);
4352                 VERIFY(zfs_refcount_not_held(
4353                     &zio->io_metaslab_class->mc_alloc_slots[zio->io_allocator],
4354                     zio));
4355         }
4356
4357
4358         for (int c = 0; c < ZIO_CHILD_TYPES; c++)
4359                 for (int w = 0; w < ZIO_WAIT_TYPES; w++)
4360                         ASSERT(zio->io_children[c][w] == 0);
4361
4362         if (zio->io_bp != NULL && !BP_IS_EMBEDDED(zio->io_bp)) {
4363                 ASSERT(zio->io_bp->blk_pad[0] == 0);
4364                 ASSERT(zio->io_bp->blk_pad[1] == 0);
4365                 ASSERT(bcmp(zio->io_bp, &zio->io_bp_copy,
4366                     sizeof (blkptr_t)) == 0 ||
4367                     (zio->io_bp == zio_unique_parent(zio)->io_bp));
4368                 if (zio->io_type == ZIO_TYPE_WRITE && !BP_IS_HOLE(zio->io_bp) &&
4369                     zio->io_bp_override == NULL &&
4370                     !(zio->io_flags & ZIO_FLAG_IO_REPAIR)) {
4371                         ASSERT3U(zio->io_prop.zp_copies, <=,
4372                             BP_GET_NDVAS(zio->io_bp));
4373                         ASSERT(BP_COUNT_GANG(zio->io_bp) == 0 ||
4374                             (BP_COUNT_GANG(zio->io_bp) ==
4375                             BP_GET_NDVAS(zio->io_bp)));
4376                 }
4377                 if (zio->io_flags & ZIO_FLAG_NOPWRITE)
4378                         VERIFY(BP_EQUAL(zio->io_bp, &zio->io_bp_orig));
4379         }
4380
4381         /*
4382          * If there were child vdev/gang/ddt errors, they apply to us now.
4383          */
4384         zio_inherit_child_errors(zio, ZIO_CHILD_VDEV);
4385         zio_inherit_child_errors(zio, ZIO_CHILD_GANG);
4386         zio_inherit_child_errors(zio, ZIO_CHILD_DDT);
4387
4388         /*
4389          * If the I/O on the transformed data was successful, generate any
4390          * checksum reports now while we still have the transformed data.
4391          */
4392         if (zio->io_error == 0) {
4393                 while (zio->io_cksum_report != NULL) {
4394                         zio_cksum_report_t *zcr = zio->io_cksum_report;
4395                         uint64_t align = zcr->zcr_align;
4396                         uint64_t asize = P2ROUNDUP(psize, align);
4397                         abd_t *adata = zio->io_abd;
4398
4399                         if (asize != psize) {
4400                                 adata = abd_alloc(asize, B_TRUE);
4401                                 abd_copy(adata, zio->io_abd, psize);
4402                                 abd_zero_off(adata, psize, asize - psize);
4403                         }
4404
4405                         zio->io_cksum_report = zcr->zcr_next;
4406                         zcr->zcr_next = NULL;
4407                         zcr->zcr_finish(zcr, adata);
4408                         zfs_ereport_free_checksum(zcr);
4409
4410                         if (asize != psize)
4411                                 abd_free(adata);
4412                 }
4413         }
4414
4415         zio_pop_transforms(zio);        /* note: may set zio->io_error */
4416
4417         vdev_stat_update(zio, psize);
4418
4419         /*
4420          * If this I/O is attached to a particular vdev is slow, exceeding
4421          * 30 seconds to complete, post an error described the I/O delay.
4422          * We ignore these errors if the device is currently unavailable.
4423          */
4424         if (zio->io_delay >= MSEC2NSEC(zio_slow_io_ms)) {
4425                 if (zio->io_vd != NULL && !vdev_is_dead(zio->io_vd)) {
4426                         /*
4427                          * We want to only increment our slow IO counters if
4428                          * the IO is valid (i.e. not if the drive is removed).
4429                          *
4430                          * zfs_ereport_post() will also do these checks, but
4431                          * it can also ratelimit and have other failures, so we
4432                          * need to increment the slow_io counters independent
4433                          * of it.
4434                          */
4435                         if (zfs_ereport_is_valid(FM_EREPORT_ZFS_DELAY,
4436                             zio->io_spa, zio->io_vd, zio)) {
4437                                 mutex_enter(&zio->io_vd->vdev_stat_lock);
4438                                 zio->io_vd->vdev_stat.vs_slow_ios++;
4439                                 mutex_exit(&zio->io_vd->vdev_stat_lock);
4440
4441                                 zfs_ereport_post(FM_EREPORT_ZFS_DELAY,
4442                                     zio->io_spa, zio->io_vd, &zio->io_bookmark,
4443                                     zio, 0, 0);
4444                         }
4445                 }
4446         }
4447
4448         if (zio->io_error) {
4449                 /*
4450                  * If this I/O is attached to a particular vdev,
4451                  * generate an error message describing the I/O failure
4452                  * at the block level.  We ignore these errors if the
4453                  * device is currently unavailable.
4454                  */
4455                 if (zio->io_error != ECKSUM && zio->io_vd != NULL &&
4456                     !vdev_is_dead(zio->io_vd)) {
4457                         mutex_enter(&zio->io_vd->vdev_stat_lock);
4458                         if (zio->io_type == ZIO_TYPE_READ) {
4459                                 zio->io_vd->vdev_stat.vs_read_errors++;
4460                         } else if (zio->io_type == ZIO_TYPE_WRITE) {
4461                                 zio->io_vd->vdev_stat.vs_write_errors++;
4462                         }
4463                         mutex_exit(&zio->io_vd->vdev_stat_lock);
4464
4465                         zfs_ereport_post(FM_EREPORT_ZFS_IO, zio->io_spa,
4466                             zio->io_vd, &zio->io_bookmark, zio, 0, 0);
4467                 }
4468
4469                 if ((zio->io_error == EIO || !(zio->io_flags &
4470                     (ZIO_FLAG_SPECULATIVE | ZIO_FLAG_DONT_PROPAGATE))) &&
4471                     zio == zio->io_logical) {
4472                         /*
4473                          * For logical I/O requests, tell the SPA to log the
4474                          * error and generate a logical data ereport.
4475                          */
4476                         spa_log_error(zio->io_spa, &zio->io_bookmark);
4477                         zfs_ereport_post(FM_EREPORT_ZFS_DATA, zio->io_spa,
4478                             NULL, &zio->io_bookmark, zio, 0, 0);
4479                 }
4480         }
4481
4482         if (zio->io_error && zio == zio->io_logical) {
4483                 /*
4484                  * Determine whether zio should be reexecuted.  This will
4485                  * propagate all the way to the root via zio_notify_parent().
4486                  */
4487                 ASSERT(zio->io_vd == NULL && zio->io_bp != NULL);
4488                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
4489
4490                 if (IO_IS_ALLOCATING(zio) &&
4491                     !(zio->io_flags & ZIO_FLAG_CANFAIL)) {
4492                         if (zio->io_error != ENOSPC)
4493                                 zio->io_reexecute |= ZIO_REEXECUTE_NOW;
4494                         else
4495                                 zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
4496                 }
4497
4498                 if ((zio->io_type == ZIO_TYPE_READ ||
4499                     zio->io_type == ZIO_TYPE_FREE) &&
4500                     !(zio->io_flags & ZIO_FLAG_SCAN_THREAD) &&
4501                     zio->io_error == ENXIO &&
4502                     spa_load_state(zio->io_spa) == SPA_LOAD_NONE &&
4503                     spa_get_failmode(zio->io_spa) != ZIO_FAILURE_MODE_CONTINUE)
4504                         zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
4505
4506                 if (!(zio->io_flags & ZIO_FLAG_CANFAIL) && !zio->io_reexecute)
4507                         zio->io_reexecute |= ZIO_REEXECUTE_SUSPEND;
4508
4509                 /*
4510                  * Here is a possibly good place to attempt to do
4511                  * either combinatorial reconstruction or error correction
4512                  * based on checksums.  It also might be a good place
4513                  * to send out preliminary ereports before we suspend
4514                  * processing.
4515                  */
4516         }
4517
4518         /*
4519          * If there were logical child errors, they apply to us now.
4520          * We defer this until now to avoid conflating logical child
4521          * errors with errors that happened to the zio itself when
4522          * updating vdev stats and reporting FMA events above.
4523          */
4524         zio_inherit_child_errors(zio, ZIO_CHILD_LOGICAL);
4525
4526         if ((zio->io_error || zio->io_reexecute) &&
4527             IO_IS_ALLOCATING(zio) && zio->io_gang_leader == zio &&
4528             !(zio->io_flags & (ZIO_FLAG_IO_REWRITE | ZIO_FLAG_NOPWRITE)))
4529                 zio_dva_unallocate(zio, zio->io_gang_tree, zio->io_bp);
4530
4531         zio_gang_tree_free(&zio->io_gang_tree);
4532
4533         /*
4534          * Godfather I/Os should never suspend.
4535          */
4536         if ((zio->io_flags & ZIO_FLAG_GODFATHER) &&
4537             (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND))
4538                 zio->io_reexecute &= ~ZIO_REEXECUTE_SUSPEND;
4539
4540         if (zio->io_reexecute) {
4541                 /*
4542                  * This is a logical I/O that wants to reexecute.
4543                  *
4544                  * Reexecute is top-down.  When an i/o fails, if it's not
4545                  * the root, it simply notifies its parent and sticks around.
4546                  * The parent, seeing that it still has children in zio_done(),
4547                  * does the same.  This percolates all the way up to the root.
4548                  * The root i/o will reexecute or suspend the entire tree.
4549                  *
4550                  * This approach ensures that zio_reexecute() honors
4551                  * all the original i/o dependency relationships, e.g.
4552                  * parents not executing until children are ready.
4553                  */
4554                 ASSERT(zio->io_child_type == ZIO_CHILD_LOGICAL);
4555
4556                 zio->io_gang_leader = NULL;
4557
4558                 mutex_enter(&zio->io_lock);
4559                 zio->io_state[ZIO_WAIT_DONE] = 1;
4560                 mutex_exit(&zio->io_lock);
4561
4562                 /*
4563                  * "The Godfather" I/O monitors its children but is
4564                  * not a true parent to them. It will track them through
4565                  * the pipeline but severs its ties whenever they get into
4566                  * trouble (e.g. suspended). This allows "The Godfather"
4567                  * I/O to return status without blocking.
4568                  */
4569                 zl = NULL;
4570                 for (pio = zio_walk_parents(zio, &zl); pio != NULL;
4571                     pio = pio_next) {
4572                         zio_link_t *remove_zl = zl;
4573                         pio_next = zio_walk_parents(zio, &zl);
4574
4575                         if ((pio->io_flags & ZIO_FLAG_GODFATHER) &&
4576                             (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND)) {
4577                                 zio_remove_child(pio, zio, remove_zl);
4578                                 /*
4579                                  * This is a rare code path, so we don't
4580                                  * bother with "next_to_execute".
4581                                  */
4582                                 zio_notify_parent(pio, zio, ZIO_WAIT_DONE,
4583                                     NULL);
4584                         }
4585                 }
4586
4587                 if ((pio = zio_unique_parent(zio)) != NULL) {
4588                         /*
4589                          * We're not a root i/o, so there's nothing to do
4590                          * but notify our parent.  Don't propagate errors
4591                          * upward since we haven't permanently failed yet.
4592                          */
4593                         ASSERT(!(zio->io_flags & ZIO_FLAG_GODFATHER));
4594                         zio->io_flags |= ZIO_FLAG_DONT_PROPAGATE;
4595                         /*
4596                          * This is a rare code path, so we don't bother with
4597                          * "next_to_execute".
4598                          */
4599                         zio_notify_parent(pio, zio, ZIO_WAIT_DONE, NULL);
4600                 } else if (zio->io_reexecute & ZIO_REEXECUTE_SUSPEND) {
4601                         /*
4602                          * We'd fail again if we reexecuted now, so suspend
4603                          * until conditions improve (e.g. device comes online).
4604                          */
4605                         zio_suspend(zio->io_spa, zio, ZIO_SUSPEND_IOERR);
4606                 } else {
4607                         /*
4608                          * Reexecution is potentially a huge amount of work.
4609                          * Hand it off to the otherwise-unused claim taskq.
4610                          */
4611                         ASSERT(taskq_empty_ent(&zio->io_tqent));
4612                         spa_taskq_dispatch_ent(zio->io_spa,
4613                             ZIO_TYPE_CLAIM, ZIO_TASKQ_ISSUE,
4614                             (task_func_t *)zio_reexecute, zio, 0,
4615                             &zio->io_tqent);
4616                 }
4617                 return (NULL);
4618         }
4619
4620         ASSERT(zio->io_child_count == 0);
4621         ASSERT(zio->io_reexecute == 0);
4622         ASSERT(zio->io_error == 0 || (zio->io_flags & ZIO_FLAG_CANFAIL));
4623
4624         /*
4625          * Report any checksum errors, since the I/O is complete.
4626          */
4627         while (zio->io_cksum_report != NULL) {
4628                 zio_cksum_report_t *zcr = zio->io_cksum_report;
4629                 zio->io_cksum_report = zcr->zcr_next;
4630                 zcr->zcr_next = NULL;
4631                 zcr->zcr_finish(zcr, NULL);
4632                 zfs_ereport_free_checksum(zcr);
4633         }
4634
4635         if (zio->io_flags & ZIO_FLAG_FASTWRITE && zio->io_bp &&
4636             !BP_IS_HOLE(zio->io_bp) && !BP_IS_EMBEDDED(zio->io_bp) &&
4637             !(zio->io_flags & ZIO_FLAG_NOPWRITE)) {
4638                 metaslab_fastwrite_unmark(zio->io_spa, zio->io_bp);
4639         }
4640
4641         /*
4642          * It is the responsibility of the done callback to ensure that this
4643          * particular zio is no longer discoverable for adoption, and as
4644          * such, cannot acquire any new parents.
4645          */
4646         if (zio->io_done)
4647                 zio->io_done(zio);
4648
4649         mutex_enter(&zio->io_lock);
4650         zio->io_state[ZIO_WAIT_DONE] = 1;
4651         mutex_exit(&zio->io_lock);
4652
4653         /*
4654          * We are done executing this zio.  We may want to execute a parent
4655          * next.  See the comment in zio_notify_parent().
4656          */
4657         zio_t *next_to_execute = NULL;
4658         zl = NULL;
4659         for (pio = zio_walk_parents(zio, &zl); pio != NULL; pio = pio_next) {
4660                 zio_link_t *remove_zl = zl;
4661                 pio_next = zio_walk_parents(zio, &zl);
4662                 zio_remove_child(pio, zio, remove_zl);
4663                 zio_notify_parent(pio, zio, ZIO_WAIT_DONE, &next_to_execute);
4664         }
4665
4666         if (zio->io_waiter != NULL) {
4667                 mutex_enter(&zio->io_lock);
4668                 zio->io_executor = NULL;
4669                 cv_broadcast(&zio->io_cv);
4670                 mutex_exit(&zio->io_lock);
4671         } else {
4672                 zio_destroy(zio);
4673         }
4674
4675         return (next_to_execute);
4676 }
4677
4678 /*
4679  * ==========================================================================
4680  * I/O pipeline definition
4681  * ==========================================================================
4682  */
4683 static zio_pipe_stage_t *zio_pipeline[] = {
4684         NULL,
4685         zio_read_bp_init,
4686         zio_write_bp_init,
4687         zio_free_bp_init,
4688         zio_issue_async,
4689         zio_write_compress,
4690         zio_encrypt,
4691         zio_checksum_generate,
4692         zio_nop_write,
4693         zio_ddt_read_start,
4694         zio_ddt_read_done,
4695         zio_ddt_write,
4696         zio_ddt_free,
4697         zio_gang_assemble,
4698         zio_gang_issue,
4699         zio_dva_throttle,
4700         zio_dva_allocate,
4701         zio_dva_free,
4702         zio_dva_claim,
4703         zio_ready,
4704         zio_vdev_io_start,
4705         zio_vdev_io_done,
4706         zio_vdev_io_assess,
4707         zio_checksum_verify,
4708         zio_done
4709 };
4710
4711
4712
4713
4714 /*
4715  * Compare two zbookmark_phys_t's to see which we would reach first in a
4716  * pre-order traversal of the object tree.
4717  *
4718  * This is simple in every case aside from the meta-dnode object. For all other
4719  * objects, we traverse them in order (object 1 before object 2, and so on).
4720  * However, all of these objects are traversed while traversing object 0, since
4721  * the data it points to is the list of objects.  Thus, we need to convert to a
4722  * canonical representation so we can compare meta-dnode bookmarks to
4723  * non-meta-dnode bookmarks.
4724  *
4725  * We do this by calculating "equivalents" for each field of the zbookmark.
4726  * zbookmarks outside of the meta-dnode use their own object and level, and
4727  * calculate the level 0 equivalent (the first L0 blkid that is contained in the
4728  * blocks this bookmark refers to) by multiplying their blkid by their span
4729  * (the number of L0 blocks contained within one block at their level).
4730  * zbookmarks inside the meta-dnode calculate their object equivalent
4731  * (which is L0equiv * dnodes per data block), use 0 for their L0equiv, and use
4732  * level + 1<<31 (any value larger than a level could ever be) for their level.
4733  * This causes them to always compare before a bookmark in their object
4734  * equivalent, compare appropriately to bookmarks in other objects, and to
4735  * compare appropriately to other bookmarks in the meta-dnode.
4736  */
4737 int
4738 zbookmark_compare(uint16_t dbss1, uint8_t ibs1, uint16_t dbss2, uint8_t ibs2,
4739     const zbookmark_phys_t *zb1, const zbookmark_phys_t *zb2)
4740 {
4741         /*
4742          * These variables represent the "equivalent" values for the zbookmark,
4743          * after converting zbookmarks inside the meta dnode to their
4744          * normal-object equivalents.
4745          */
4746         uint64_t zb1obj, zb2obj;
4747         uint64_t zb1L0, zb2L0;
4748         uint64_t zb1level, zb2level;
4749
4750         if (zb1->zb_object == zb2->zb_object &&
4751             zb1->zb_level == zb2->zb_level &&
4752             zb1->zb_blkid == zb2->zb_blkid)
4753                 return (0);
4754
4755         IMPLY(zb1->zb_level > 0, ibs1 >= SPA_MINBLOCKSHIFT);
4756         IMPLY(zb2->zb_level > 0, ibs2 >= SPA_MINBLOCKSHIFT);
4757
4758         /*
4759          * BP_SPANB calculates the span in blocks.
4760          */
4761         zb1L0 = (zb1->zb_blkid) * BP_SPANB(ibs1, zb1->zb_level);
4762         zb2L0 = (zb2->zb_blkid) * BP_SPANB(ibs2, zb2->zb_level);
4763
4764         if (zb1->zb_object == DMU_META_DNODE_OBJECT) {
4765                 zb1obj = zb1L0 * (dbss1 << (SPA_MINBLOCKSHIFT - DNODE_SHIFT));
4766                 zb1L0 = 0;
4767                 zb1level = zb1->zb_level + COMPARE_META_LEVEL;
4768         } else {
4769                 zb1obj = zb1->zb_object;
4770                 zb1level = zb1->zb_level;
4771         }
4772
4773         if (zb2->zb_object == DMU_META_DNODE_OBJECT) {
4774                 zb2obj = zb2L0 * (dbss2 << (SPA_MINBLOCKSHIFT - DNODE_SHIFT));
4775                 zb2L0 = 0;
4776                 zb2level = zb2->zb_level + COMPARE_META_LEVEL;
4777         } else {
4778                 zb2obj = zb2->zb_object;
4779                 zb2level = zb2->zb_level;
4780         }
4781
4782         /* Now that we have a canonical representation, do the comparison. */
4783         if (zb1obj != zb2obj)
4784                 return (zb1obj < zb2obj ? -1 : 1);
4785         else if (zb1L0 != zb2L0)
4786                 return (zb1L0 < zb2L0 ? -1 : 1);
4787         else if (zb1level != zb2level)
4788                 return (zb1level > zb2level ? -1 : 1);
4789         /*
4790          * This can (theoretically) happen if the bookmarks have the same object
4791          * and level, but different blkids, if the block sizes are not the same.
4792          * There is presently no way to change the indirect block sizes
4793          */
4794         return (0);
4795 }
4796
4797 /*
4798  *  This function checks the following: given that last_block is the place that
4799  *  our traversal stopped last time, does that guarantee that we've visited
4800  *  every node under subtree_root?  Therefore, we can't just use the raw output
4801  *  of zbookmark_compare.  We have to pass in a modified version of
4802  *  subtree_root; by incrementing the block id, and then checking whether
4803  *  last_block is before or equal to that, we can tell whether or not having
4804  *  visited last_block implies that all of subtree_root's children have been
4805  *  visited.
4806  */
4807 boolean_t
4808 zbookmark_subtree_completed(const dnode_phys_t *dnp,
4809     const zbookmark_phys_t *subtree_root, const zbookmark_phys_t *last_block)
4810 {
4811         zbookmark_phys_t mod_zb = *subtree_root;
4812         mod_zb.zb_blkid++;
4813         ASSERT(last_block->zb_level == 0);
4814
4815         /* The objset_phys_t isn't before anything. */
4816         if (dnp == NULL)
4817                 return (B_FALSE);
4818
4819         /*
4820          * We pass in 1ULL << (DNODE_BLOCK_SHIFT - SPA_MINBLOCKSHIFT) for the
4821          * data block size in sectors, because that variable is only used if
4822          * the bookmark refers to a block in the meta-dnode.  Since we don't
4823          * know without examining it what object it refers to, and there's no
4824          * harm in passing in this value in other cases, we always pass it in.
4825          *
4826          * We pass in 0 for the indirect block size shift because zb2 must be
4827          * level 0.  The indirect block size is only used to calculate the span
4828          * of the bookmark, but since the bookmark must be level 0, the span is
4829          * always 1, so the math works out.
4830          *
4831          * If you make changes to how the zbookmark_compare code works, be sure
4832          * to make sure that this code still works afterwards.
4833          */
4834         return (zbookmark_compare(dnp->dn_datablkszsec, dnp->dn_indblkshift,
4835             1ULL << (DNODE_BLOCK_SHIFT - SPA_MINBLOCKSHIFT), 0, &mod_zb,
4836             last_block) <= 0);
4837 }
4838
4839 #if defined(_KERNEL)
4840 EXPORT_SYMBOL(zio_type_name);
4841 EXPORT_SYMBOL(zio_buf_alloc);
4842 EXPORT_SYMBOL(zio_data_buf_alloc);
4843 EXPORT_SYMBOL(zio_buf_free);
4844 EXPORT_SYMBOL(zio_data_buf_free);
4845
4846 module_param(zio_slow_io_ms, int, 0644);
4847 MODULE_PARM_DESC(zio_slow_io_ms,
4848         "Max I/O completion time (milliseconds) before marking it as slow");
4849
4850 module_param(zio_requeue_io_start_cut_in_line, int, 0644);
4851 MODULE_PARM_DESC(zio_requeue_io_start_cut_in_line, "Prioritize requeued I/O");
4852
4853 module_param(zfs_sync_pass_deferred_free, int, 0644);
4854 MODULE_PARM_DESC(zfs_sync_pass_deferred_free,
4855         "Defer frees starting in this pass");
4856
4857 module_param(zfs_sync_pass_dont_compress, int, 0644);
4858 MODULE_PARM_DESC(zfs_sync_pass_dont_compress,
4859         "Don't compress starting in this pass");
4860
4861 module_param(zfs_sync_pass_rewrite, int, 0644);
4862 MODULE_PARM_DESC(zfs_sync_pass_rewrite,
4863         "Rewrite new bps starting in this pass");
4864
4865 module_param(zio_dva_throttle_enabled, int, 0644);
4866 MODULE_PARM_DESC(zio_dva_throttle_enabled,
4867         "Throttle block allocations in the ZIO pipeline");
4868
4869 module_param(zio_deadman_log_all, int, 0644);
4870 MODULE_PARM_DESC(zio_deadman_log_all,
4871         "Log all slow ZIOs, not just those with vdevs");
4872 #endif