mirror_zfs/module/zfs
Alexander Motin 4abc21b28c
Block remap for cloned blocks on device removal
When after device removal we handle block pointers remap, skip blocks
that might be cloned.  BRTs are indexed by vdev id and offset from
block pointer's DVA[0].  So if we start addressing the same block by
some different DVA, we won't get the proper reference counter.  As
result, we might either remap the block twice, that may result in
assertion during indirect mapping condense, or free it prematurely,
that may result in data overwrite, or free it twice, that may result
in assertion in spacemap code.

Reviewed-by: Ameer Hamza <ahamza@ixsystems.com>
Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by:  Alexander Motin <mav@FreeBSD.org>
Sponsored by:   iXsystems, Inc.
Closes #15604
Closes #17180
2025-03-26 16:45:34 -07:00
..
abd.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
aggsum.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
arc.c Make ganging redundancy respect redundant_metadata property (#17073) 2025-03-19 15:58:29 -07:00
blake3_zfs.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
blkptr.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
bplist.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
bpobj.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
bptree.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
bqueue.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
brt.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
btree.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dataset_kstats.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dbuf_stats.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dbuf.c Make ganging redundancy respect redundant_metadata property (#17073) 2025-03-19 15:58:29 -07:00
ddt_log.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
ddt_stats.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
ddt_zap.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
ddt.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_diff.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_direct.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_object.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_objset.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
dmu_recv.c Make ganging redundancy respect redundant_metadata property (#17073) 2025-03-19 15:58:29 -07:00
dmu_redact.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
dmu_send.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_traverse.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu_tx.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
dmu_zfetch.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dmu.c Make ganging redundancy respect redundant_metadata property (#17073) 2025-03-19 15:58:29 -07:00
dnode_sync.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dnode.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_bookmark.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_crypt.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_dataset.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_deadlist.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_deleg.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_destroy.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_dir.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_pool.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_prop.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
dsl_scan.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
dsl_synctask.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
dsl_userhold.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
edonr_zfs.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
fm.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
gzip.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
hkdf.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
lz4_zfs.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
lz4.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
lzjb.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
metaslab.c Block remap for cloned blocks on device removal 2025-03-26 16:45:34 -07:00
mmp.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
multilist.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
objlist.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
pathname.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
range_tree.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
refcount.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
rrwlock.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
sa.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
sha2_zfs.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
skein_zfs.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa_checkpoint.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa_config.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa_errlog.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa_history.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
spa_log_spacemap.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa_misc.c Unified allocation throttling (#17020) 2025-03-24 09:25:01 -07:00
spa_stats.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
spa.c Unified allocation throttling (#17020) 2025-03-24 09:25:01 -07:00
space_map.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
space_reftree.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
THIRDPARTYLICENSE.cityhash OpenZFS 8484 - Implement aggregate sum and use for arc counters 2018-06-06 09:35:59 -07:00
THIRDPARTYLICENSE.cityhash.descrip OpenZFS 8484 - Implement aggregate sum and use for arc counters 2018-06-06 09:35:59 -07:00
txg.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
uberblock.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
unique.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_draid_rand.c SPDX: license tags: LicenseRef-OpenZFS-ThirdParty-PublicDomain 2025-03-13 17:57:31 -07:00
vdev_draid.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_file.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_indirect_births.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_indirect_mapping.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_indirect.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
vdev_initialize.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
vdev_label.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_mirror.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_missing.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_queue.c Unified allocation throttling (#17020) 2025-03-24 09:25:01 -07:00
vdev_raidz_math_aarch64_neon_common.h SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_aarch64_neon.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_aarch64_neonx2.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_avx2.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_avx512bw.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_avx512f.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_impl.h SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_powerpc_altivec_common.h SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_powerpc_altivec.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_scalar.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_sse2.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math_ssse3.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz_math.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_raidz.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
vdev_rebuild.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
vdev_removal.c Unified allocation throttling (#17020) 2025-03-24 09:25:01 -07:00
vdev_root.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
vdev_trim.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
vdev.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zap_leaf.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zap_micro.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zap.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp_get.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp_global.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp_iter.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp_set.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp_synctask.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zcp.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfeature.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_byteswap.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_chksum.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_fm.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_fuid.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_impl.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_ioctl.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_log.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_onexit.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_quota.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_ratelimit.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_replay.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_rlock.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_sa.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_vnops.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_znode.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zil.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zio_checksum.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zio_compress.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zio_inject.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zio.c Unified allocation throttling (#17020) 2025-03-24 09:25:01 -07:00
zle.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zrlock.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zthr.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zvol.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00