387 lines
15 KiB
Bash
387 lines
15 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# Copyright(c) 2012-2020 Intel Corporation
|
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
#
|
|
# Whenever adding new options (required or optional), add them to the variable below.
|
|
# Every option might be mentioned more than once - it doesn't really matter at this point
|
|
export ALL_OPTIONS="
|
|
CACHE_ID_OPTION CORE_ID_OPTION NEGATIVE_TEST_OPTION SILENT_COMMAND_OPTION DONT_FAIL_ON_ERROR_OPTION
|
|
CACHE_DEVICE_OPTION
|
|
CACHE_LOAD_METADATA_OPTION CACHE_FORCE_OPTION
|
|
CACHE_DONT_FLUSH_DATA_OPTION
|
|
CORE_DEVICE_OPTION
|
|
NUMBER_OF_CACHE_PARTITIONS NUMBER_OF_CORE_PARTITIONS MAKE_FILE_SYSTEM
|
|
PARTITION_ID_OPTION PRIORITY_OPTION MIN_SIZE_OPTION MAX_SIZE_OPTION CLEANING_POLICY_OPTION
|
|
CACHE_ID_OPTION CORE_ID_OPTION MOUNTPOINT_ID_OPTION
|
|
TARGET_DEVICE_OPTION PARTITION_IDS_OPTION PARTITION_SIZE_OPTION PARTITION_ID_OPTION PARTITIONS_AMOUNT_OPTION
|
|
CLEAN_POL_NS_OPTION WAKE_UP_OPTION STALE_TIME_OPTION FLUSH_BUFFERS_OPTION ACTIVITY_THRESH_OPTION
|
|
PROMO_POL_NS_OPTION PROMO_POL_VALUE THRESHOLD_OPTION TRIGGER_OPTION THRESHOLD_VALUE TRIGGER_VALUE THRESHOLD_VALUE_ERROR TRIGGER_VALUE_ERROR
|
|
TARGET_DEVICE_OPTION FILESYSTEM_TYPE
|
|
IO_CLASS_ID IO_CLASS_PRIORITY IO_CLASS_SIZE_MIN IO_CLASS_SIZE_MAX IO_CLASS_NAME IO_CLASS_CACHE_MODE
|
|
CHECK_IS_NVME_ATOMIC TURN_OFF_NVME_DEVICE TURN_ON_NVME_DEVICE
|
|
DEVICE_ID_OPTION DEMANDED_STATE_OPTION
|
|
STAT_UNIT_OPTION STAT_NAME_OPTION
|
|
STORE_CONFIG_OPTION
|
|
CLEAN_POL_OPTION
|
|
PROMO_POL_OPTION
|
|
KERNEL_VER_OPTION KERNEL_MAJOR_OPTION
|
|
FIO_MAJOR_OPTION FIO_MINOR_OPTION
|
|
"
|
|
|
|
# Specify ONLY required options here. The name of the variable should start with
|
|
# uppercase function's name + "_REQUIRED_OPTIONS".
|
|
|
|
export START_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CACHE_DEVICE_OPTION"
|
|
export STOP_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION"
|
|
export ADD_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_DEVICE_OPTION"
|
|
export TRY_ADD_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION CORE_DEVICE_OPTION"
|
|
export CHECK_DEVICE_STATE_REQUIRED_OPTIONS="DEVICE_ID_OPTION DEMANDED_STATE_OPTION"
|
|
export REMOVE_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
|
|
export REMOVE_PARTITIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION"
|
|
export FLUSH_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION"
|
|
export FLUSH_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
|
|
export SET_CLEANING_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_OPTION"
|
|
export GET_CLEANING_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION"
|
|
export SET_PROMOTION_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_OPTION"
|
|
export CHECK_PROMOTION_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_OPTION"
|
|
export SET_FLUSH_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_NS_OPTION"
|
|
export GET_FLUSH_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_NS_OPTION"
|
|
export SET_PROMOTION_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_NS_OPTION"
|
|
export CHECK_PROMOTION_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_NS_OPTION"
|
|
export CHECK_IS_NVME_ATOMIC_REQUIRED_OPTIONS="DEVICE_OPTION"
|
|
|
|
export CREATE_PARTITION_REQUIRED_OPTIONS="CACHE_ID_OPTION PARTITION_ID_OPTION PRIORITY_OPTION MIN_SIZE_OPTION MAX_SIZE_OPTION CLEANING_POLICY_OPTION"
|
|
|
|
export MOUNT_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
|
|
|
|
export MAKE_PRIMARY_PARTITIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITION_IDS_OPTION PARTITION_SIZE_OPTION"
|
|
export MAKE_EXTENDED_PARTIION_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITION_ID_OPTION PARTITION_SIZE_OPTION"
|
|
export MAKE_LOGICAL_PARTIIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITIONS_AMOUNT_OPTION PARTITION_SIZE_OPTION"
|
|
export MAKE_FILESYSTEM_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION FILESYSTEM_TYPE"
|
|
export TURN_OFF_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
|
|
export TURN_ON_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
|
|
export TURN_OFF_NVME_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
|
|
export TURN_ON_NVME_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
|
|
|
|
export START_DUAL_LEVEL_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CACHE_DEVICE_OPTION"
|
|
|
|
export START_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CACHE_DEVICE_OPTION"
|
|
|
|
export IO_CLASS_LIST_REQUIRED_OPTIONS="CACHE_ID_OPTION"
|
|
export IO_CLASS_LOAD_REQUIRED_OPTIONS="CACHE_ID_OPTION CSV_FILE"
|
|
export IO_CLASS_STATS_CSV_REQUIRED_OPTIONS="CACHE_ID_OPTION CSV_FILE"
|
|
|
|
export IO_CLASS_EXT_ADD_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID IO_CLASS_PRIORITY IO_CLASS_SIZE_MIN IO_CLASS_SIZE_MAX IO_CLASS_NAME IO_CLASS_CACHE_MODE"
|
|
export IO_CLASS_EXT_MODIFY_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID"
|
|
export IO_CLASS_EXT_REMOVE_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID"
|
|
|
|
export STATS_REQUIRED_OPTIONS="CACHE_ID_OPTION"
|
|
export GET_STATS_VALUE_REQUIRED_OPTIONS="CACHE_ID_OPTION STAT_NAME_OPTION"
|
|
|
|
export CHECK_KERNEL_VER_REQUIRED_OPTIONS="KERNEL_VER_OPTION KERNEL_MAJOR_OPTION"
|
|
export CHECK_FIO_VER_REQUIRED_OPTIONS="FIO_MAJOR_OPTION FIO_MINOR_OPTION"
|
|
|
|
# Clearing the variables below is not really needed, but it makes the whole
|
|
# thing much more clear. Unlike the REQUIRED_OPTIONS, we specify all
|
|
# possible parameters here for every function.
|
|
# Please note that some options are shared between many functions, so
|
|
# make sure the option is set to a correct value before invoking one
|
|
# function after another.
|
|
|
|
############################################################
|
|
# OPTIONS SHARED BETWEEN ALL FUNCTIONS #
|
|
############################################################
|
|
NEGATIVE_TEST_OPTION=""
|
|
SILENT_COMMAND_OPTION=""
|
|
DONT_FAIL_ON_ERROR_OPTION=""
|
|
############################################################
|
|
# CLEAR CONFIG #
|
|
############################################################
|
|
STORE_CONFIG_OPTION=""
|
|
############################################################
|
|
# START CACHE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CACHE_DEVICE_OPTION=""
|
|
# Optional
|
|
CACHE_FORCE_OPTION=""
|
|
CACHE_LOAD_METADATA_OPTION=""
|
|
SEQ_CUTOFF_SIZE=""
|
|
|
|
############################################################
|
|
# STOP CACHE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
# Optional
|
|
CACHE_DONT_FLUSH_DATA_OPTION=""
|
|
|
|
############################################################
|
|
# ADD CORE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CORE_DEVICE_OPTION=""
|
|
|
|
############################################################
|
|
# REMOVE CORE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CORE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK DEVICE STATE #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
DEMANDED_STATE_OPTION=""
|
|
|
|
############################################################
|
|
# FORMAT NVME #
|
|
############################################################
|
|
NVME_FORMAT_MODE_OPTION=""
|
|
DEVICE_OPTION=""
|
|
NVME_FORMAT_FORCE_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK_IS_NVME_ATOMIC #
|
|
############################################################
|
|
DEVICE_OPTION=""
|
|
|
|
############################################################
|
|
# INIT #
|
|
############################################################
|
|
NUMBER_OF_CACHE_PARTITIONS=""
|
|
NUMBER_OF_CORE_PARTITIONS=""
|
|
MAKE_FILE_SYSTEM=""
|
|
CACHE_FORCE_OPTION=""
|
|
CACHE_MODE_OPTION=""
|
|
CACHE_LOAD_METADATA_OPTION=""
|
|
|
|
############################################################
|
|
# ITERATION #
|
|
############################################################
|
|
NUMBER_OF_CACHE_PARTITIONS=""
|
|
NUMBER_OF_CORE_PARTITIONS=""
|
|
MAKE_FILE_SYSTEM=""
|
|
CACHE_FORCE_OPTION=""
|
|
CACHE_MODE_OPTION=""
|
|
CACHE_LOAD_METADATA_OPTION=""
|
|
|
|
############################################################
|
|
# DEINIT #
|
|
############################################################
|
|
NUMBER_OF_CACHE_PARTITIONS=""
|
|
NUMBER_OF_CORE_PARTITIONS=""
|
|
|
|
############################################################
|
|
# FLUSH CACHE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# FLUSH CORE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CORE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# MOUNT CACHE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CORE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# MAKE PRIMARY PARTITIONS #
|
|
############################################################
|
|
TARGET_DEVICE_OPTION=""
|
|
PARTITION_IDS_OPTION=""
|
|
PARTITION_SIZE_OPTION=""
|
|
|
|
############################################################
|
|
# MAKE EXTENDED PARTITION #
|
|
############################################################
|
|
TARGET_DEVICE_OPTION=""
|
|
PARTITION_ID_OPTION=""
|
|
PARTITION_SIZE_OPTION=""
|
|
|
|
############################################################
|
|
# MAKE LOGICAL PARTITIONS #
|
|
############################################################
|
|
TARGET_DEVICE_OPTION=""
|
|
PARTITION_SIZE_OPTION=""
|
|
PARTITIONS_AMOUNT_OPTION=""
|
|
|
|
############################################################
|
|
# MAKE FILESYSTEM #
|
|
############################################################
|
|
TARGET_DEVICE_OPTION=""
|
|
FILESYSTEM_TYPE=""
|
|
|
|
############################################################
|
|
# IO CLASS LIST #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
# Optional
|
|
CSV_FILE=""
|
|
|
|
############################################################
|
|
# IO CLASS LOAD #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CSV_FILE=""
|
|
|
|
############################################################
|
|
# IO CLASS EXT ADD #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
IO_CLASS_ID=""
|
|
IO_CLASS_PRIORITY=""
|
|
IO_CLASS_SIZE_MIN=""
|
|
IO_CLASS_SIZE_MAX=""
|
|
IO_CLASS_NAME=""
|
|
IO_CLASS_CACHE_MODE=""
|
|
|
|
############################################################
|
|
# IO CLASS EXT MODIFY #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
IO_CLASS_ID=""
|
|
#Optional
|
|
IO_CLASS_PRIORITY=""
|
|
IO_CLASS_SIZE_MIN=""
|
|
IO_CLASS_SIZE_MAX=""
|
|
IO_CLASS_NAME=""
|
|
IO_CLASS_CACHE_MODE=""
|
|
|
|
############################################################
|
|
# IO CLASS EXT REMOVE #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
IO_CLASS_ID=""
|
|
|
|
############################################################
|
|
# IO CLASS STATS CSV #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
CSV_FILE=""
|
|
|
|
############################################################
|
|
# STATS #
|
|
############################################################
|
|
CACHE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# GET_STATS_VALUE #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
STAT_NAME_OPTION=""
|
|
#Optional
|
|
STAT_UNIT_OPTION=""
|
|
CORE_ID_OPTION=""
|
|
IO_CLASS_ID=""
|
|
|
|
############################################################
|
|
# SET_CLEANING_POLICY #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
CLEAN_POLICY_OPTION=""
|
|
|
|
############################################################
|
|
# GET_CLEANING_POLICY #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
|
|
############################################################
|
|
# SET_FLUSH_PARAMS #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
CLEAN_POLICY_NS_OPTION=""
|
|
#Optional
|
|
WAKE_UP_OPTION=""
|
|
STALE_TIME_OPTION=""
|
|
FLUSH_BUFFERS_OPTION=""
|
|
ACTIVITY_THRESH_OPTION=""
|
|
|
|
############################################################
|
|
# GET_FLUSH_PARAMS #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
CLEAN_POLICY_NS_OPTION=""
|
|
|
|
############################################################
|
|
# SET_PROMOTION_POLICY #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
PROMO_POL_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK_PROMOTION_POLICY #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
PROMO_POL_OPTION=""
|
|
|
|
############################################################
|
|
# SET_PROMOTION_PARAMS #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
PROMO_POL_NS_OPTION=""
|
|
#Optional
|
|
THRESHOLD_OPTION=""
|
|
TRIGGER_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK_PROMOTION_PARAMS #
|
|
############################################################
|
|
DEVICE_ID_OPTION=""
|
|
PROMO_POL_NS_OPTION=""
|
|
#Optional
|
|
THRESHOLD_OPTION=""
|
|
TRIGGER_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK KERNEL VER #
|
|
############################################################
|
|
KERNEL_VER_OPTION=""
|
|
KERNEL_MAJOR_OPTION=""
|
|
|
|
############################################################
|
|
# CHECK FIO VER #
|
|
############################################################
|
|
FIO_MAJOR_OPTION=""
|
|
FIO_MINOR_OPTION=""
|
|
|
|
############################################################
|
|
# FUNCTIONS #
|
|
############################################################
|
|
|
|
# This function is what exports and sets all the options above.
|
|
# All options should be automatically cleared after using them in API.
|
|
clear_options() {
|
|
for OPTION in $ALL_OPTIONS ; do
|
|
export $OPTION=""
|
|
done
|
|
}
|
|
|
|
# This should be used in all API/system functions to check if all required
|
|
# options are set. It doesn't check the syntax at all - only if option is set.
|
|
check_options() {
|
|
FUNCTION_NAME=$(echo $1 | tr [:lower:] [:upper:])
|
|
OPTIONS_NAME="${FUNCTION_NAME}_REQUIRED_OPTIONS"
|
|
OPTIONS_TO_CHECK="${!OPTIONS_NAME}"
|
|
|
|
for OPTION in $OPTIONS_TO_CHECK ; do
|
|
if [ -z "${!OPTION}" ] ; then
|
|
echo -n "Required option $OPTION is not set "
|
|
echo_red "[ERROR]"
|
|
end_test 1
|
|
fi
|
|
done
|
|
}
|
|
|
|
export -f clear_options
|
|
export -f check_options
|
|
|
|
export CAS_OPTIONS_LOADED="1"
|
|
|
|
echo "--- Open CAS options library loaded ---"
|