# This file exports variables for each tunable used in the test suite.
#
# Different platforms use different names for most tunables. To avoid littering
# the tests with conditional logic for deciding how to set each tunable, the
# logic is instead consolidated to this one file.
#
# Any use of tunables in tests must use a name defined here. New entries
# should be added to the table as needed. Please keep the table sorted
# alphabetically for ease of maintenance.
#
# Platform-specific tunables should still use a NAME from this table for
# consistency. Enter UNSUPPORTED in the column for platforms on which the
# tunable is not implemented.

UNAME=$(uname)

# NAME				FreeBSD tunable			Linux tunable
cat <<%%%% |
ADMIN_SNAPSHOT			UNSUPPORTED			zfs_admin_snapshot
ALLOW_REDACTED_DATASET_MOUNT	allow_redacted_dataset_mount	zfs_allow_redacted_dataset_mount
ARC_MAX				arc.max				zfs_arc_max
ARC_MIN				arc.min				zfs_arc_min
ASYNC_BLOCK_MAX_BLOCKS		async_block_max_blocks		zfs_async_block_max_blocks
CHECKSUM_EVENTS_PER_SECOND	checksum_events_per_second	zfs_checksum_events_per_second
COMMIT_TIMEOUT_PCT		commit_timeout_pct		zfs_commit_timeout_pct
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_OBSOLETE_PCT	condense.indirect_obsolete_pct	zfs_condense_indirect_obsolete_pct
CONDENSE_MIN_MAPPING_BYTES	condense.min_mapping_bytes	zfs_condense_min_mapping_bytes
DBUF_CACHE_SHIFT		dbuf.cache_shift		dbuf_cache_shift
DDT_ZAP_DEFAULT_BS		dedup.ddt_zap_default_bs	ddt_zap_default_bs
DDT_ZAP_DEFAULT_IBS		dedup.ddt_zap_default_ibs	ddt_zap_default_ibs
DDT_DATA_IS_SPECIAL		ddt_data_is_special		zfs_ddt_data_is_special
DEDUP_LOG_TXG_MAX		dedup.log_txg_max		zfs_dedup_log_txg_max
DEDUP_LOG_FLUSH_ENTRIES_MAX	dedup.log_flush_entries_max	zfs_dedup_log_flush_entries_max
DEDUP_LOG_FLUSH_ENTRIES_MIN	dedup.log_flush_entries_min	zfs_dedup_log_flush_entries_min
DEADMAN_CHECKTIME_MS		deadman.checktime_ms		zfs_deadman_checktime_ms
DEADMAN_EVENTS_PER_SECOND	deadman_events_per_second	zfs_deadman_events_per_second
DEADMAN_FAILMODE		deadman.failmode		zfs_deadman_failmode
DEADMAN_SYNCTIME_MS		deadman.synctime_ms		zfs_deadman_synctime_ms
DEADMAN_ZIOTIME_MS		deadman.ziotime_ms		zfs_deadman_ziotime_ms
DIO_WRITE_VERIFY_EVENTS_PER_SECOND	dio_write_verify_events_per_second	zfs_dio_write_verify_events_per_second
DISABLE_IVSET_GUID_CHECK	disable_ivset_guid_check	zfs_disable_ivset_guid_check
DMU_OFFSET_NEXT_SYNC		dmu_offset_next_sync		zfs_dmu_offset_next_sync
EMBEDDED_SLOG_MIN_MS		embedded_slog_min_ms		zfs_embedded_slog_min_ms
INITIALIZE_CHUNK_SIZE		initialize_chunk_size		zfs_initialize_chunk_size
INITIALIZE_VALUE		initialize_value		zfs_initialize_value
KEEP_LOG_SPACEMAPS_AT_EXPORT	keep_log_spacemaps_at_export	zfs_keep_log_spacemaps_at_export
LUA_MAX_MEMLIMIT		lua.max_memlimit		zfs_lua_max_memlimit
L2ARC_MFUONLY			l2arc.mfuonly			l2arc_mfuonly
L2ARC_NOPREFETCH		l2arc.noprefetch		l2arc_noprefetch
L2ARC_REBUILD_BLOCKS_MIN_L2SIZE	l2arc.rebuild_blocks_min_l2size	l2arc_rebuild_blocks_min_l2size
L2ARC_REBUILD_ENABLED		l2arc.rebuild_enabled		l2arc_rebuild_enabled
L2ARC_TRIM_AHEAD		l2arc.trim_ahead		l2arc_trim_ahead
L2ARC_WRITE_BOOST		l2arc.write_boost		l2arc_write_boost
L2ARC_WRITE_MAX			l2arc.write_max			l2arc_write_max
LIVELIST_CONDENSE_NEW_ALLOC	livelist.condense.new_alloc	zfs_livelist_condense_new_alloc
LIVELIST_CONDENSE_SYNC_CANCEL	livelist.condense.sync_cancel	zfs_livelist_condense_sync_cancel
LIVELIST_CONDENSE_SYNC_PAUSE	livelist.condense.sync_pause	zfs_livelist_condense_sync_pause
LIVELIST_CONDENSE_ZTHR_CANCEL	livelist.condense.zthr_cancel	zfs_livelist_condense_zthr_cancel
LIVELIST_CONDENSE_ZTHR_PAUSE	livelist.condense.zthr_pause	zfs_livelist_condense_zthr_pause
LIVELIST_MAX_ENTRIES		livelist.max_entries		zfs_livelist_max_entries
LIVELIST_MIN_PERCENT_SHARED	livelist.min_percent_shared	zfs_livelist_min_percent_shared
MAX_DATASET_NESTING		max_dataset_nesting		zfs_max_dataset_nesting
MAX_MISSING_TVDS		max_missing_tvds		zfs_max_missing_tvds
METASLAB_DEBUG_LOAD		metaslab.debug_load		metaslab_debug_load
METASLAB_FORCE_GANGING		metaslab.force_ganging		metaslab_force_ganging
METASLAB_FORCE_GANGING_PCT	metaslab.force_ganging_pct	metaslab_force_ganging_pct
MULTIHOST_FAIL_INTERVALS	multihost.fail_intervals	zfs_multihost_fail_intervals
MULTIHOST_HISTORY		multihost.history		zfs_multihost_history
MULTIHOST_IMPORT_INTERVALS	multihost.import_intervals	zfs_multihost_import_intervals
MULTIHOST_INTERVAL		multihost.interval		zfs_multihost_interval
OVERRIDE_ESTIMATE_RECORDSIZE	send.override_estimate_recordsize	zfs_override_estimate_recordsize
PREFETCH_DISABLE		prefetch.disable		zfs_prefetch_disable
RAIDZ_EXPAND_MAX_REFLOW_BYTES	vdev.expand_max_reflow_bytes	raidz_expand_max_reflow_bytes
REBUILD_SCRUB_ENABLED		rebuild_scrub_enabled		zfs_rebuild_scrub_enabled
REMOVAL_SUSPEND_PROGRESS	removal_suspend_progress	zfs_removal_suspend_progress
REMOVE_MAX_SEGMENT		remove_max_segment		zfs_remove_max_segment
RESILVER_MIN_TIME_MS		resilver_min_time_ms		zfs_resilver_min_time_ms
RESILVER_DEFER_PERCENT		resilver_defer_percent		zfs_resilver_defer_percent
SCAN_LEGACY			scan_legacy			zfs_scan_legacy
SCAN_SUSPEND_PROGRESS		scan_suspend_progress		zfs_scan_suspend_progress
SCAN_VDEV_LIMIT			scan_vdev_limit			zfs_scan_vdev_limit
SCRUB_AFTER_EXPAND		scrub_after_expand		zfs_scrub_after_expand
SEND_HOLES_WITHOUT_BIRTH_TIME	send_holes_without_birth_time	send_holes_without_birth_time
SLOW_IO_EVENTS_PER_SECOND	slow_io_events_per_second	zfs_slow_io_events_per_second
SPA_ASIZE_INFLATION		spa.asize_inflation		spa_asize_inflation
SPA_DISCARD_MEMORY_LIMIT	spa.discard_memory_limit	zfs_spa_discard_memory_limit
SPA_LOAD_VERIFY_DATA		spa.load_verify_data		spa_load_verify_data
SPA_LOAD_VERIFY_METADATA	spa.load_verify_metadata	spa_load_verify_metadata
TRIM_EXTENT_BYTES_MIN		trim.extent_bytes_min		zfs_trim_extent_bytes_min
TRIM_METASLAB_SKIP		trim.metaslab_skip		zfs_trim_metaslab_skip
TRIM_TXG_BATCH			trim.txg_batch			zfs_trim_txg_batch
TXG_HISTORY			txg.history			zfs_txg_history
TXG_TIMEOUT			txg.timeout			zfs_txg_timeout
UNLINK_SUSPEND_PROGRESS		UNSUPPORTED			zfs_unlink_suspend_progress
VDEV_FILE_LOGICAL_ASHIFT	vdev.file.logical_ashift	vdev_file_logical_ashift
VDEV_FILE_PHYSICAL_ASHIFT	vdev.file.physical_ashift	vdev_file_physical_ashift
VDEV_MAX_AUTO_ASHIFT		vdev.max_auto_ashift		zfs_vdev_max_auto_ashift
VDEV_MIN_MS_COUNT		vdev.min_ms_count		zfs_vdev_min_ms_count
VDEV_DIRECT_WR_VERIFY		vdev.direct_write_verify	zfs_vdev_direct_write_verify
VDEV_VALIDATE_SKIP		vdev.validate_skip		vdev_validate_skip
VOL_INHIBIT_DEV			UNSUPPORTED			zvol_inhibit_dev
VOL_MODE			vol.mode			zvol_volmode
VOL_RECURSIVE			vol.recursive			UNSUPPORTED
VOL_USE_BLK_MQ			UNSUPPORTED			zvol_use_blk_mq
BCLONE_ENABLED			bclone_enabled			zfs_bclone_enabled
BCLONE_WAIT_DIRTY		bclone_wait_dirty		zfs_bclone_wait_dirty
DIO_ENABLED			dio_enabled			zfs_dio_enabled
XATTR_COMPAT			xattr_compat			zfs_xattr_compat
ZEVENT_LEN_MAX			zevent.len_max			zfs_zevent_len_max
ZEVENT_RETAIN_MAX		zevent.retain_max		zfs_zevent_retain_max
ZIO_SLOW_IO_MS			zio.slow_io_ms			zio_slow_io_ms
ZIL_SAXATTR			zil_saxattr			zfs_zil_saxattr
%%%%
while read name FreeBSD Linux; do
	eval "export ${name}=\$${UNAME}"
done
