diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/src/cli-cmd-parser.c | 10 | ||||
-rw-r--r-- | cli/src/cli-cmd-volume.c | 7 | ||||
-rw-r--r-- | cli/src/cli-rpc-ops.c | 3 |
3 files changed, 18 insertions, 2 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index a3d46b6023..59c27b87f4 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -3594,6 +3594,16 @@ cli_cmd_volume_heal_options_parse (const char **words, int wordcount, goto out; goto done; } + if (!strcmp (words[4], "latest-mtime")) { + ret = dict_set_int32 (dict, "heal-op", + GF_SHD_OP_SBRAIN_HEAL_FROM_LATEST_MTIME); + if (ret) + goto out; + ret = dict_set_str (dict, "file", (char *)words[5]); + if (ret) + goto out; + goto done; + } if (!strcmp (words[4], "source-brick")) { ret = dict_set_int32 (dict, "heal-op", GF_SHD_OP_SBRAIN_HEAL_FROM_BRICK); diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 74f58eeab9..d332b3a12e 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -2112,6 +2112,7 @@ cli_print_brick_status (cli_volume_status_t *status) } #define NEEDS_GLFS_HEAL(op) ((op == GF_SHD_OP_SBRAIN_HEAL_FROM_BIGGER_FILE) || \ + (op == GF_SHD_OP_SBRAIN_HEAL_FROM_LATEST_MTIME) ||\ (op == GF_SHD_OP_SBRAIN_HEAL_FROM_BRICK) || \ (op == GF_SHD_OP_INDEX_SUMMARY) || \ (op == GF_SHD_OP_SPLIT_BRAIN_FILES)) @@ -2140,6 +2141,10 @@ cli_launch_glfs_heal (int heal_op, dict_t *options) ret = dict_get_str (options, "file", &filename); runner_add_args (&runner, "bigger-file", filename, NULL); break; + case GF_SHD_OP_SBRAIN_HEAL_FROM_LATEST_MTIME: + ret = dict_get_str (options, "file", &filename); + runner_add_args (&runner, "latest-mtime", filename, NULL); + break; case GF_SHD_OP_SBRAIN_HEAL_FROM_BRICK: ret = dict_get_str (options, "heal-source-hostname", &hostname); @@ -2626,7 +2631,7 @@ struct cli_cmd volume_cmds[] = { { "volume heal <VOLNAME> [enable | disable | full |" "statistics [heal-count [replica <HOSTNAME:BRICKNAME>]] |" "info [healed | heal-failed | split-brain] |" - "split-brain {bigger-file <FILE> |" + "split-brain {bigger-file <FILE> | latest-mtime <FILE> |" "source-brick <HOSTNAME:BRICKNAME> [<FILE>]}]", cli_cmd_volume_heal_cbk, "self-heal commands on volume specified by <VOLNAME>"}, diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 8a0f26bfbf..9ca516e545 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -8544,9 +8544,10 @@ gf_cli_heal_volume_cbk (struct rpc_req *req, struct iovec *iov, case GF_SHD_OP_STATISTICS_HEAL_COUNT_PER_REPLICA: heal_op_str = "count of entries to be healed per replica"; break; - /* The below 2 cases are never hit; they're coded only to make + /* The below 3 cases are never hit; they're coded only to make * compiler warnings go away.*/ case GF_SHD_OP_SBRAIN_HEAL_FROM_BIGGER_FILE: + case GF_SHD_OP_SBRAIN_HEAL_FROM_LATEST_MTIME: case GF_SHD_OP_SBRAIN_HEAL_FROM_BRICK: break; |