mirror_zfs/module/zfs
Alexander Motin a89d209bb6 BRT: Fix holes cloning.
- When reading L0 block pointers handle buffers without ones and
without dirty records as a holes.  Those appear when dnode size
was increased, but the end was never written, so there are no new
indirection levels to store the pointers.  It makes no sense to
return EAGAIN here, since sync won't create new indirection levels
until there will be actual writes.
 - When cloning blocks set destination hole logical birth time
to the current TXG.  Otherwise if we are cloning over existing
data, newly created holes may not be properly replicated later.
Use BP_SET_BIRTH() when possible to not replicate its logic.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15994
Closes #16007
2024-03-27 14:45:27 -07:00
..
abd.c abd: add page iterator 2024-03-25 16:50:35 -07:00
aggsum.c
arc.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
blake3_zfs.c blake3: fix up bogus checksums in face of cpu migration 2023-05-01 17:21:27 -07:00
blkptr.c
bplist.c Use list_remove_head() where possible. 2023-06-09 10:12:52 -07:00
bpobj.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
bptree.c
bqueue.c Batch enqueue/dequeue for bqueue 2023-01-10 13:39:22 -08:00
brt.c BRT: Skip getting length in brt_entry_lookup() 2024-03-25 17:13:45 -07:00
btree.c btree: Implement faster binary search algorithm 2023-05-26 10:03:12 -07:00
dataset_kstats.c Update the kstat dataset_name when renaming a zvol 2023-11-07 11:34:50 -08:00
dbuf_stats.c Consider dnode_t allocations in dbuf cache size accounting 2023-11-17 13:25:53 -08:00
dbuf.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
ddt_stats.c ddt: ensure ddt objects exist before trying to get stats from them 2024-02-15 11:45:33 -08:00
ddt_zap.c ddt: rework ops interface in terms of keys and values 2024-02-15 11:45:38 -08:00
ddt.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dmu_diff.c
dmu_object.c zfs redact fails when dnodesize=auto 2023-02-16 09:23:39 -08:00
dmu_objset.c Improve ZFS objset sync parallelism 2023-11-06 10:38:42 -08:00
dmu_recv.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dmu_redact.c Increase limit of redaction list by using spill block 2023-08-26 11:34:43 -07:00
dmu_send.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dmu_traverse.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dmu_tx.c DMU: Do not pre-read holes during write 2023-10-11 16:37:21 -07:00
dmu_zfetch.c Add prefetch property 2023-10-24 11:00:07 -07:00
dmu.c BRT: Fix holes cloning. 2024-03-27 14:45:27 -07:00
dnode_sync.c For db_marker inherit the db pointer for AVL comparision. 2023-12-11 14:42:06 -08:00
dnode.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_bookmark.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_crypt.c Allow block cloning across encrypted datasets 2023-12-05 11:03:48 -08:00
dsl_dataset.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_deadlist.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_deleg.c
dsl_destroy.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_dir.c Fix ENOSPC for extended quota 2023-09-28 14:10:07 -07:00
dsl_pool.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_prop.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
dsl_scan.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
dsl_synctask.c
dsl_userhold.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
edonr_zfs.c Remove unused Edon-R variants 2023-03-14 15:59:58 -07:00
fm.c Use list_remove_head() where possible. 2023-06-09 10:12:52 -07:00
gzip.c
hkdf.c
lz4_zfs.c
lz4.c
lzjb.c
metaslab.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
mmp.c Use abd_zero_off() where applicable 2023-11-17 13:28:32 -08:00
multilist.c Cleanup: Specify unsignedness on things that should not be signed 2022-09-27 16:42:41 -07:00
objlist.c
pathname.c
range_tree.c btree: Implement faster binary search algorithm 2023-05-26 10:03:12 -07:00
refcount.c Switch refcount tracking from lists to AVL-trees. 2023-06-14 08:02:27 -07:00
rrwlock.c
sa.c sa_lookup() ignores buffer size. 2023-11-07 12:11:48 -08:00
sha2_zfs.c Add generic implementation handling and SHA2 impl 2023-03-02 13:52:21 -08:00
skein_zfs.c
spa_checkpoint.c RAID-Z expansion feature 2023-11-08 10:19:41 -08:00
spa_config.c Add mutex_enter_interruptible() for interruptible sleeping IOCTLs 2023-10-26 09:17:40 -07:00
spa_errlog.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
spa_history.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
spa_log_spacemap.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
spa_misc.c BRT: Fix slop space calculation with block cloning 2024-02-12 13:53:33 -08:00
spa_stats.c Cleanup: Specify unsignedness on things that should not be signed 2022-09-27 16:42:41 -07:00
spa.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
space_map.c
space_reftree.c
THIRDPARTYLICENSE.cityhash
THIRDPARTYLICENSE.cityhash.descrip
txg.c Another set of vdev queue optimizations. 2023-06-27 09:09:48 -07:00
uberblock.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
unique.c
vdev_draid_rand.c
vdev_draid.c RAID-Z expansion feature 2023-11-08 10:19:41 -08:00
vdev_indirect_births.c
vdev_indirect_mapping.c
vdev_indirect.c Don't emit cksum_{actual_expected} in ereport.fs.zfs.checksum events 2023-07-21 11:49:26 -07:00
vdev_initialize.c RAID-Z expansion feature 2023-11-08 10:19:41 -08:00
vdev_label.c Extend aux label to add path information 2024-01-16 13:17:59 -08:00
vdev_mirror.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
vdev_missing.c
vdev_queue.c Fix accounting error for pending sync IO ops in zpool iostat 2023-11-07 09:06:14 -08:00
vdev_raidz_math_aarch64_neon_common.h
vdev_raidz_math_aarch64_neon.c
vdev_raidz_math_aarch64_neonx2.c Fix Clang 15 compilation errors 2022-11-30 13:46:26 -08:00
vdev_raidz_math_avx2.c
vdev_raidz_math_avx512bw.c
vdev_raidz_math_avx512f.c
vdev_raidz_math_impl.h RAIDZ: Use cache blocking during parity math 2023-10-30 14:54:27 -07:00
vdev_raidz_math_powerpc_altivec_common.h Linux ppc64le ieee128 compat: Do not redefine __asm on external headers 2023-01-13 10:58:58 -08:00
vdev_raidz_math_powerpc_altivec.c
vdev_raidz_math_scalar.c
vdev_raidz_math_sse2.c
vdev_raidz_math_ssse3.c
vdev_raidz_math.c Miscellaneous FreBSD compilation bugfixes 2023-04-06 10:35:02 -07:00
vdev_raidz.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
vdev_rebuild.c Tweak rebuild in-flight hard limit 2023-09-29 08:21:25 -07:00
vdev_removal.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
vdev_root.c
vdev_trim.c Autotrim High Load Average Fix 2024-01-17 09:03:58 -08:00
vdev.c Add slow disk diagnosis to ZED 2024-02-08 09:19:52 -08:00
zap_leaf.c ZAP: Some cleanups/micro-optimizations 2024-03-21 16:43:53 -07:00
zap_micro.c ZAP: Massively switch to _by_dnode() interfaces 2024-03-25 14:58:50 -07:00
zap.c ZAP: Massively switch to _by_dnode() interfaces 2024-03-25 14:58:50 -07:00
zcp_get.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
zcp_global.c
zcp_iter.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
zcp_set.c
zcp_synctask.c
zcp.c nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
zfeature.c
zfs_byteswap.c
zfs_chksum.c Add generic implementation handling and SHA2 impl 2023-03-02 13:52:21 -08:00
zfs_fm.c Add slow disk diagnosis to ZED 2024-02-08 09:19:52 -08:00
zfs_fuid.c Use list_remove_head() where possible. 2023-06-09 10:12:52 -07:00
zfs_impl.c Add generic implementation handling and SHA2 impl 2023-03-02 13:52:21 -08:00
zfs_ioctl.c zvol: fix delayed update to block device ro entry 2023-10-31 09:50:38 -07:00
zfs_log.c ZIL: Cleanup sync and commit handling 2023-10-30 14:51:56 -07:00
zfs_onexit.c Use list_remove_head() where possible. 2023-06-09 10:12:52 -07:00
zfs_quota.c Revert "Do not persist user/group/project quota zap objects when unneeded" 2023-10-23 09:55:36 -07:00
zfs_ratelimit.c
zfs_replay.c ZIL: Assert record sizes in different places 2023-11-28 13:35:14 -08:00
zfs_rlock.c
zfs_sa.c
zfs_vnops.c Fix corruption caused by mmap flushing problems 2024-03-25 14:56:49 -07:00
zil.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
zio_checksum.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
zio_compress.c Skip memory allocation when compressing holes 2023-02-27 14:41:02 -08:00
zio_inject.c Add slow disk diagnosis to ZED 2024-02-08 09:19:52 -08:00
zio.c Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
zle.c
zrlock.c Micro-optimize zrl_remove() 2022-11-29 09:26:03 -08:00
zthr.c
zvol.c ZIL: Remove TX_CLONE_RANGE replay for ZVOLs. 2023-12-01 15:23:20 -08:00