Fix false assertion in dmu_tx_dirty_buf() on cloning

Same as writes block cloning can increase block size and number of
indirection levels.  That means it can dirty block 0 at level 0 or
at new top indirection level without explicitly holding them.

A block cloning test case for large offsets has been added.

Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Co-authored-by: Ameer Hamza <ahamza@ixsystems.com>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes #16825
This commit is contained in:
Alexander Motin
2024-12-05 14:48:08 -05:00
committed by Brian Behlendorf
parent d874f27776
commit f54052a122
5 changed files with 95 additions and 1 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ tests = ['block_cloning_clone_mmap_cached',
'block_cloning_copyfilerange_fallback_same_txg',
'block_cloning_replay', 'block_cloning_replay_encrypted',
'block_cloning_lwb_buffer_overflow', 'block_cloning_clone_mmap_write',
'block_cloning_rlimit_fsize']
'block_cloning_rlimit_fsize', 'block_cloning_large_offset']
tags = ['functional', 'block_cloning']
[tests/functional/bootfs]