ZTS: fix removal_condense_export test case

It's been observed in the CI that the required 25% of obsolete bytes
in the mapping can be to high a threshold for this test resulting in
condensing never being triggered and a test failure.  To prevent these
failures make the existing zfs_condense_indirect_obsolete_pct tuning
available so the obsolete percentage can be reduced from 25% to 5%
during this test.

Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #11869
This commit is contained in:
Brian Behlendorf 2021-04-11 21:49:13 -07:00 committed by GitHub
parent 4ef03d077c
commit 888700bc6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 3 deletions

View File

@ -1445,6 +1445,19 @@ to throttle vdev removal speed.
Default value: \fB0\fR (no throttle). Default value: \fB0\fR (no throttle).
.RE .RE
.sp
.ne 2
.na
\fBzfs_condense_indirect_obsolete_pct\fR (int)
.ad
.RS 12n
Minimum percent of obsolete bytes in vdev mapping required to attempt to
condense (see \fBzfs_condense_indirect_vdevs_enable\fR). Intended for use
with the test suite to facilitate triggering condensing as needed.
.sp
Default value: \fB25\fR%.
.RE
.sp .sp
.ne 2 .ne 2
.na .na

View File

@ -181,7 +181,7 @@ int zfs_condense_indirect_vdevs_enable = B_TRUE;
* condenses. Higher values will condense less often (causing less * condenses. Higher values will condense less often (causing less
* i/o); lower values will reduce the mapping size more quickly. * i/o); lower values will reduce the mapping size more quickly.
*/ */
int zfs_indirect_condense_obsolete_pct = 25; int zfs_condense_indirect_obsolete_pct = 25;
/* /*
* Condense if the obsolete space map takes up more than this amount of * Condense if the obsolete space map takes up more than this amount of
@ -445,7 +445,7 @@ vdev_indirect_should_condense(vdev_t *vd)
* by the mapping. * by the mapping.
*/ */
if (bytes_obsolete * 100 / bytes_mapped >= if (bytes_obsolete * 100 / bytes_mapped >=
zfs_indirect_condense_obsolete_pct && zfs_condense_indirect_obsolete_pct &&
mapping_size > zfs_condense_min_mapping_bytes) { mapping_size > zfs_condense_min_mapping_bytes) {
zfs_dbgmsg("should condense vdev %llu because obsolete " zfs_dbgmsg("should condense vdev %llu because obsolete "
"spacemap covers %d%% of %lluMB mapping", "spacemap covers %d%% of %lluMB mapping",
@ -1892,6 +1892,9 @@ EXPORT_SYMBOL(vdev_obsolete_sm_object);
ZFS_MODULE_PARAM(zfs_condense, zfs_condense_, indirect_vdevs_enable, INT, ZMOD_RW, ZFS_MODULE_PARAM(zfs_condense, zfs_condense_, indirect_vdevs_enable, INT, ZMOD_RW,
"Whether to attempt condensing indirect vdev mappings"); "Whether to attempt condensing indirect vdev mappings");
ZFS_MODULE_PARAM(zfs_condense, zfs_condense_, indirect_obsolete_pct, INT, ZMOD_RW,
"Minimum obsolete percent of bytes in the mapping to attempt condensing");
ZFS_MODULE_PARAM(zfs_condense, zfs_condense_, min_mapping_bytes, ULONG, ZMOD_RW, ZFS_MODULE_PARAM(zfs_condense, zfs_condense_, min_mapping_bytes, ULONG, ZMOD_RW,
"Don't bother condensing if the mapping uses less than this amount of " "Don't bother condensing if the mapping uses less than this amount of "
"memory"); "memory");

View File

@ -263,7 +263,6 @@ if sys.platform.startswith('freebsd'):
'delegate/zfs_allow_003_pos': ['FAIL', known_reason], 'delegate/zfs_allow_003_pos': ['FAIL', known_reason],
'inheritance/inherit_001_pos': ['FAIL', '11829'], 'inheritance/inherit_001_pos': ['FAIL', '11829'],
'pool_checkpoint/checkpoint_zhack_feat': ['FAIL', '11854'], 'pool_checkpoint/checkpoint_zhack_feat': ['FAIL', '11854'],
'removal/removal_condense_export': ['FAIL', known_reason],
'resilver/resilver_restart_001': ['FAIL', known_reason], 'resilver/resilver_restart_001': ['FAIL', known_reason],
'zvol/zvol_misc/zvol_misc_volmode': ['FAIL', known_reason], 'zvol/zvol_misc/zvol_misc_volmode': ['FAIL', known_reason],
}) })

View File

@ -25,6 +25,7 @@ CHECKSUM_EVENTS_PER_SECOND checksum_events_per_second zfs_checksum_events_per_se
COMMIT_TIMEOUT_PCT commit_timeout_pct zfs_commit_timeout_pct COMMIT_TIMEOUT_PCT commit_timeout_pct zfs_commit_timeout_pct
COMPRESSED_ARC_ENABLED compressed_arc_enabled zfs_compressed_arc_enabled COMPRESSED_ARC_ENABLED compressed_arc_enabled zfs_compressed_arc_enabled
CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS condense.indirect_commit_entry_delay_ms zfs_condense_indirect_commit_entry_delay_ms CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS condense.indirect_commit_entry_delay_ms zfs_condense_indirect_commit_entry_delay_ms
CONDENSE_INDIRECT_OBSOLETE_PCT condense.indirect_obsolete_pct zfs_condense_indirect_obsolete_pct
CONDENSE_MIN_MAPPING_BYTES condense.min_mapping_bytes zfs_condense_min_mapping_bytes CONDENSE_MIN_MAPPING_BYTES condense.min_mapping_bytes zfs_condense_min_mapping_bytes
DBUF_CACHE_MAX_BYTES dbuf_cache.max_bytes dbuf_cache_max_bytes DBUF_CACHE_MAX_BYTES dbuf_cache.max_bytes dbuf_cache_max_bytes
DEADMAN_CHECKTIME_MS deadman.checktime_ms zfs_deadman_checktime_ms DEADMAN_CHECKTIME_MS deadman.checktime_ms zfs_deadman_checktime_ms

View File

@ -24,6 +24,7 @@
function reset function reset
{ {
log_must set_tunable64 CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS 0 log_must set_tunable64 CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS 0
log_must set_tunable64 CONDENSE_INDIRECT_OBSOLETE_PCT 25
log_must set_tunable64 CONDENSE_MIN_MAPPING_BYTES 131072 log_must set_tunable64 CONDENSE_MIN_MAPPING_BYTES 131072
default_cleanup_noexit default_cleanup_noexit
} }
@ -31,6 +32,7 @@ function reset
default_setup_noexit "$DISKS" "true" default_setup_noexit "$DISKS" "true"
log_onexit reset log_onexit reset
log_must set_tunable64 CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS 5000 log_must set_tunable64 CONDENSE_INDIRECT_COMMIT_ENTRY_DELAY_MS 5000
log_must set_tunable64 CONDENSE_INDIRECT_OBSOLETE_PCT 5
log_must set_tunable64 CONDENSE_MIN_MAPPING_BYTES 1 log_must set_tunable64 CONDENSE_MIN_MAPPING_BYTES 1
log_must zfs set recordsize=512 $TESTPOOL/$TESTFS log_must zfs set recordsize=512 $TESTPOOL/$TESTFS