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