mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-23 10:54:35 +03:00
Implementation of block cloning for ZFS
Block Cloning allows to manually clone a file (or a subset of its blocks) into another (or the same) file by just creating additional references to the data blocks without copying the data itself. Those references are kept in the Block Reference Tables (BRTs). The whole design of block cloning is documented in module/zfs/brt.c. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Christian Schwarz <christian.schwarz@nutanix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Rich Ercolani <rincebrain@gmail.com> Signed-off-by: Pawel Jakub Dawidek <pawel@dawidek.net> Closes #13392
This commit is contained in:
committed by
GitHub
parent
da19d919a8
commit
67a1b03791
@@ -590,7 +590,7 @@
|
||||
<elf-symbol name='fletcher_4_superscalar_ops' size='64' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='libzfs_config_ops' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='sa_protocol_names' size='16' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='spa_feature_table' size='2072' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='spa_feature_table' size='2128' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='zfeature_checks_disable' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='zfs_deleg_perm_tab' size='512' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
<elf-symbol name='zfs_history_event_names' size='328' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
|
||||
@@ -3174,7 +3174,10 @@
|
||||
<enumerator name='ZPOOL_PROP_LOAD_GUID' value='30'/>
|
||||
<enumerator name='ZPOOL_PROP_AUTOTRIM' value='31'/>
|
||||
<enumerator name='ZPOOL_PROP_COMPATIBILITY' value='32'/>
|
||||
<enumerator name='ZPOOL_NUM_PROPS' value='33'/>
|
||||
<enumerator name='ZPOOL_PROP_BCLONEUSED' value='33'/>
|
||||
<enumerator name='ZPOOL_PROP_BCLONESAVED' value='34'/>
|
||||
<enumerator name='ZPOOL_PROP_BCLONERATIO' value='35'/>
|
||||
<enumerator name='ZPOOL_NUM_PROPS' value='36'/>
|
||||
</enum-decl>
|
||||
<typedef-decl name='zpool_prop_t' type-id='af1ba157' id='5d0c23fb'/>
|
||||
<enum-decl name='vdev_prop_t' naming-typedef-id='5aa5c90c' id='1573bec8'>
|
||||
@@ -4850,8 +4853,8 @@
|
||||
</function-decl>
|
||||
</abi-instr>
|
||||
<abi-instr address-size='64' path='module/zcommon/zfeature_common.c' language='LANG_C99'>
|
||||
<array-type-def dimensions='1' type-id='83f29ca2' size-in-bits='16576' id='d95b2b0b'>
|
||||
<subrange length='37' type-id='7359adad' id='aa6426fb'/>
|
||||
<array-type-def dimensions='1' type-id='83f29ca2' size-in-bits='17024' id='d95b2b0b'>
|
||||
<subrange length='38' type-id='7359adad' id='aa6426fb'/>
|
||||
</array-type-def>
|
||||
<enum-decl name='spa_feature' id='33ecb627'>
|
||||
<underlying-type type-id='9cac1fee'/>
|
||||
@@ -4893,7 +4896,8 @@
|
||||
<enumerator name='SPA_FEATURE_ZILSAXATTR' value='34'/>
|
||||
<enumerator name='SPA_FEATURE_HEAD_ERRLOG' value='35'/>
|
||||
<enumerator name='SPA_FEATURE_BLAKE3' value='36'/>
|
||||
<enumerator name='SPA_FEATURES' value='37'/>
|
||||
<enumerator name='SPA_FEATURE_BLOCK_CLONING' value='37'/>
|
||||
<enumerator name='SPA_FEATURES' value='38'/>
|
||||
</enum-decl>
|
||||
<typedef-decl name='spa_feature_t' type-id='33ecb627' id='d6618c78'/>
|
||||
<enum-decl name='zfeature_flags' id='6db816a4'>
|
||||
|
||||
@@ -339,6 +339,8 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
|
||||
case ZPOOL_PROP_ASHIFT:
|
||||
case ZPOOL_PROP_MAXBLOCKSIZE:
|
||||
case ZPOOL_PROP_MAXDNODESIZE:
|
||||
case ZPOOL_PROP_BCLONESAVED:
|
||||
case ZPOOL_PROP_BCLONEUSED:
|
||||
if (literal)
|
||||
(void) snprintf(buf, len, "%llu",
|
||||
(u_longlong_t)intval);
|
||||
@@ -380,6 +382,7 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
|
||||
}
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_BCLONERATIO:
|
||||
case ZPOOL_PROP_DEDUPRATIO:
|
||||
if (literal)
|
||||
(void) snprintf(buf, len, "%llu.%02llu",
|
||||
|
||||
@@ -74,6 +74,7 @@ nodist_libzpool_la_SOURCES = \
|
||||
module/zfs/bptree.c \
|
||||
module/zfs/bqueue.c \
|
||||
module/zfs/btree.c \
|
||||
module/zfs/brt.c \
|
||||
module/zfs/dbuf.c \
|
||||
module/zfs/dbuf_stats.c \
|
||||
module/zfs/ddt.c \
|
||||
|
||||
Reference in New Issue
Block a user