]> git.proxmox.com Git - mirror_zfs.git/commit
Increase limit of redaction list by using spill block
authorPaul Dagnelie <pcd@delphix.com>
Sat, 26 Aug 2023 18:34:43 +0000 (11:34 -0700)
committerGitHub <noreply@github.com>
Sat, 26 Aug 2023 18:34:43 +0000 (11:34 -0700)
commitbee9cfb813f45f8458a8fd7584e526124d2e2d03
tree11b10b5e76214b7f41b2b06c81f7e0f7ad72c282
parent11326f8eb1bb0a4c5d8e7ae3b577c8cd56c9009c
Increase limit of redaction list by using spill block

Currently redaction bookmarks and their associated redaction lists
have a relatively low limit of 36 redaction snapshots. This is imposed
by the number of snapshot GUIDs that fit in the bonus buffer of the
redaction list object. While this is more than enough for most use
cases, there are some limited cases where larger numbers would be
useful to support.

We tweak the redaction list creation code to use a spill block if
the number of redaction snapshots is above the amount that would fit
in the bonus buffer. We also make a small change to allow spill blocks
to be use for types of data besides SA. In order to fully leverage
this logic, we also change the redaction code to use vmem_alloc, to
handle extremely large allocations if needed. Finally, small tweaks
were made to the zfs commands and the test suite.

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #15018
13 files changed:
cmd/zdb/zdb.c
cmd/zfs/zfs_main.c
include/sys/dsl_bookmark.h
include/zfeature_common.h
lib/libzfs/libzfs.abi
man/man7/zpool-features.7
module/zcommon/zfeature_common.c
module/zfs/dmu_redact.c
module/zfs/dnode.c
module/zfs/dsl_bookmark.c
module/zfs/dsl_destroy.c
tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg
tests/zfs-tests/tests/functional/redacted_send/redacted_many_clones.ksh