Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block standby #1503

Merged
merged 2 commits into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion casadm/argp.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright(c) 2012-2021 Intel Corporation
* Copyright(c) 2024 Huawei Technologies
* SPDX-License-Identifier: BSD-3-Clause
*/

Expand All @@ -26,6 +27,11 @@ static int is_command_hidden(const cli_command* commands, int cmd)
return commands[cmd].flags & CLI_COMMAND_HIDDEN;
}

static int is_command_blocked(const cli_command* commands, int cmd)
{
return commands[cmd].flags & CLI_COMMAND_BLOCKED;
}

static void print_short_usage(const app *app_values)
{
cas_printf(LOG_INFO, "Usage: %s %s\n", app_values->name, app_values->info);
Expand Down Expand Up @@ -313,8 +319,10 @@ void print_help(const app *app_values, const cli_command *commands)
break;
}

if (is_command_hidden(commands, i))
if (is_command_hidden(commands, i) ||
is_command_blocked(commands, i)) {
continue;
}

get_short_name_string(commands[i].short_name, short_name);

Expand Down Expand Up @@ -614,6 +622,11 @@ int args_parse(app *app_values, cli_command *commands, int argc, const char **ar
}
}

if (is_command_blocked(commands, i)) {
cas_printf(LOG_ERR, "The command is not supported\n");
return FAILURE;
}

configure_cli_commands(commands);

if (argc >= 3 && get_help_position(argc, argv) != -1) {
Expand Down
4 changes: 3 additions & 1 deletion casadm/argp.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright(c) 2012-2021 Intel Corporation
* Copyright(c) 2024 Huawei Technologies
* SPDX-License-Identifier: BSD-3-Clause
*/

Expand All @@ -22,7 +23,8 @@ enum CLI_OPTION_FLAGS {

enum CLI_COMMAND_FLAGS {
CLI_SU_REQUIRED = 1 << 0,
CLI_COMMAND_HIDDEN = 1 << 1
CLI_COMMAND_HIDDEN = 1 << 1,
CLI_COMMAND_BLOCKED = 1 << 2
};

#define ERROR -1
Expand Down
3 changes: 2 additions & 1 deletion casadm/cas_main.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright(c) 2012-2022 Intel Corporation
* Copyright(c) 2024 Huawei Technologies
* SPDX-License-Identifier: BSD-3-Clause
*/

Expand Down Expand Up @@ -2373,7 +2374,7 @@ static cli_command cas_commands[] = {
.options = standby_params_options,
.command_handle_opts = standby_handle_option,
.handle = standby_handle,
.flags = CLI_SU_REQUIRED,
.flags = (CLI_COMMAND_BLOCKED | CLI_SU_REQUIRED),
.help = standby_help,
},
{
Expand Down
18 changes: 18 additions & 0 deletions modules/cas_cache/layer_cache_management.c
Original file line number Diff line number Diff line change
Expand Up @@ -1882,6 +1882,15 @@ int cache_mngt_create_cache_cfg(struct ocf_mngt_cache_config *cfg,
char cache_name[OCF_CACHE_NAME_SIZE];
uint16_t cache_id;

switch (cmd->init_cache) {
case CACHE_INIT_STANDBY_NEW:
case CACHE_INIT_STANDBY_LOAD:
printk(KERN_ERR "Standby mode is not supported!\n");
return -ENOTSUP;
default:
break;
}

if (!cmd)
return -OCF_ERR_INVAL;

Expand Down Expand Up @@ -2453,6 +2462,15 @@ int cache_mngt_init_instance(struct ocf_mngt_cache_config *cfg,
ocf_cache_mode_t cache_mode_meta;
ocf_cache_line_size_t cache_line_size_meta;

switch (cmd->init_cache) {
case CACHE_INIT_STANDBY_NEW:
case CACHE_INIT_STANDBY_LOAD:
printk(KERN_ERR "Standby mode is not supported!\n");
return -ENOTSUP;
default:
break;
}

if (!try_module_get(THIS_MODULE))
return -KCAS_ERR_SYSTEM;

Expand Down
5 changes: 5 additions & 0 deletions modules/cas_cache/service_ui_ioctl.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright(c) 2012-2022 Intel Corporation
* Copyright(c) 2024 Huawei Technologies
* SPDX-License-Identifier: BSD-3-Clause
*/

Expand Down Expand Up @@ -381,6 +382,8 @@ long cas_service_ioctl_ctrl(struct file *filp, unsigned int cmd,
case KCAS_IOCTL_STANDBY_DETACH: {
struct kcas_standby_detach *cmd_info;

return -ENOTSUP;

GET_CMD_INFO(cmd_info, arg);

retval = cache_mngt_standby_detach(cmd_info);
Expand All @@ -391,6 +394,8 @@ long cas_service_ioctl_ctrl(struct file *filp, unsigned int cmd,
struct kcas_standby_activate *cmd_info;
struct ocf_mngt_cache_standby_activate_config cfg;

return -ENOTSUP;

GET_CMD_INFO(cmd_info, arg);

retval = cache_mngt_create_cache_standby_activate_cfg(&cfg,
Expand Down
27 changes: 2 additions & 25 deletions test/functional/api/cas/cli_help_messages.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2020-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand All @@ -23,7 +24,6 @@
r"-C --io-class Manage IO classes",
r"-V --version Print CAS version",
r"-H --help Print help",
r"--standby Manage failover standby",
r"--zero-metadata Clear metadata from caching device",
r"For detailed help on the above commands use --help after the command\.",
r"e\.g\.",
Expand Down Expand Up @@ -242,30 +242,7 @@
]

standby_help = [
r"Usage: casadm --standby \{--init|--load|--detach|--activate\}",
r"Manage failover standby",
r"Initialize cache in standby mode:",
r"Usage: casadm --standby --init --cache-id \<ID\> --cache-line-size \<NUMBER\> "
r"--cache-device \<DEVICE\> \[option...\]",
r"Options that are valid with --init are:",
r"-i --cache-id \<ID\> Identifier of cache instance \<1-16384\>",
r"-x --cache-line-size \<NUMBER\> Set cache line size in kibibytes: \{4,8,16,32,64\}"
r"\[KiB\] \(default: 4\)",
r"-d --cache-device \<DEVICE\> Caching device to be used",
r"-f --force Force the initialization of cache instance",
r"Load cache in standby mode:",
r"Usage: casadm --standby --load --cache-device \<DEVICE\>",
r"Options that are valid with --load are:",
r"-d --cache-device \<DEVICE\> Caching device to be used",
r"Detach cache device in standby mode:",
r"Usage: casadm --standby --detach --cache-id \<ID\>",
r"Options that are valid with --detach are:",
r" -i --cache-id \<ID\> Identifier of cache instance \<1-16384\>",
r"Activate standby cache:",
r"Usage: casadm --standby --activate --cache-id \<ID\> --cache-device \<DEVICE\>",
r"Options that are valid with --activate are:",
r"-i --cache-id \<ID\> Identifier of cache instance \<1-16384\>",
r"-d --cache-device \<DEVICE\> Caching device to be used"
r"The command is not supported"
]

zero_metadata_help = [
Expand Down
11 changes: 11 additions & 0 deletions test/functional/tests/cli/test_cli_standby.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand Down Expand Up @@ -37,6 +38,7 @@


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_standby_neg_cli_params():
"""
Expand Down Expand Up @@ -106,6 +108,7 @@ def test_standby_neg_cli_params():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_activate_neg_cli_params():
"""
Expand Down Expand Up @@ -186,6 +189,7 @@ def test_activate_neg_cli_params():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_standby_neg_cli_management():
"""
Expand Down Expand Up @@ -262,6 +266,7 @@ def test_standby_neg_cli_management():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_start_neg_cli_flags():
"""
Expand Down Expand Up @@ -316,6 +321,7 @@ def test_start_neg_cli_flags():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_activate_without_detach():
"""
Expand Down Expand Up @@ -379,6 +385,7 @@ def test_activate_without_detach():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("active_cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("standby_cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
def test_activate_neg_cache_line_size():
Expand Down Expand Up @@ -470,6 +477,7 @@ def test_activate_neg_cache_line_size():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_standby_init_with_preexisting_metadata():
Expand Down Expand Up @@ -528,6 +536,7 @@ def test_standby_init_with_preexisting_metadata():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
@pytest.mark.parametrizex("filesystem", Filesystem)
Expand Down Expand Up @@ -579,6 +588,7 @@ def test_standby_init_with_preexisting_filesystem(filesystem):


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("caches", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("caches"))
def test_standby_activate_with_corepool():
Expand Down Expand Up @@ -637,6 +647,7 @@ def test_standby_activate_with_corepool():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
@pytest.mark.parametrizex("cache_line_size", CacheLineSize)
def test_standby_start_stop(cache_line_size):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand Down Expand Up @@ -42,6 +43,7 @@
test_file_path = f"{mountpoint}/test_file"


@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("metadata_dev", DiskTypeSet([DiskType.nand]))
@pytest.mark.require_disk("core_dev", DiskTypeSet([DiskType.hdd]))
@pytest.mark.require_disk("raid_dev1", DiskTypeSet([DiskType.optane]))
Expand Down Expand Up @@ -226,6 +228,7 @@ def test_functional_activate_twice_round_trip(filesystem):
TestRun.LOGGER.end_group()


@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("metadata_dev", DiskTypeSet([DiskType.nand]))
@pytest.mark.require_disk("core_dev", DiskTypeSet([DiskType.hdd]))
@pytest.mark.require_disk("raid_dev1", DiskTypeSet([DiskType.optane]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand Down Expand Up @@ -28,6 +29,7 @@


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_activate_corrupted():
Expand Down Expand Up @@ -85,6 +87,7 @@ def test_activate_corrupted():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_load_corrupted():
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand Down Expand Up @@ -27,6 +28,7 @@


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
def test_activate_neg_cache_id():
"""
Expand Down Expand Up @@ -98,6 +100,7 @@ def test_activate_neg_cache_id():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_activate_incomplete_cache():
Expand Down Expand Up @@ -215,6 +218,7 @@ def test_activate_incomplete_cache():


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_activate_neg_core_size():
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand All @@ -19,6 +20,7 @@


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
@pytest.mark.parametrizex("cache_line_size", CacheLineSize)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand All @@ -14,6 +15,7 @@


@pytest.mark.CI
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.nand, DiskType.optane]))
@pytest.mark.require_disk("core", DiskTypeLowerThan("cache"))
def test_standby_activate_the_same_cache_path():
Expand Down
3 changes: 3 additions & 0 deletions test/functional/tests/initialize/test_startup_init_config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Copyright(c) 2019-2022 Intel Corporation
# Copyright(c) 2024 Huawei Technologies
# SPDX-License-Identifier: BSD-3-Clause
#

Expand Down Expand Up @@ -385,6 +386,7 @@ def test_cas_startup_negative_missing_cache():


@pytest.mark.os_dependent
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
@pytest.mark.require_disk("core", DiskTypeSet([DiskType.hdd]))
@pytest.mark.require_plugin("power_control")
Expand Down Expand Up @@ -490,6 +492,7 @@ def test_failover_config_startup():


@pytest.mark.os_dependent
@pytest.mark.skip(reason="Standby mode is not supported")
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
def test_failover_config_startup_negative():
"""
Expand Down
Loading