diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-bitrot.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-bitrot.c | 29 | 
1 files changed, 29 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-bitrot.c b/xlators/mgmt/glusterd/src/glusterd-bitrot.c index 6e91106c8e5..8c5ddfd7896 100644 --- a/xlators/mgmt/glusterd/src/glusterd-bitrot.c +++ b/xlators/mgmt/glusterd/src/glusterd-bitrot.c @@ -138,6 +138,34 @@ __glusterd_handle_bitrot (rpcsvc_request_t *req)                  }          } +        if (type == GF_BITROT_CMD_SCRUB_ONDEMAND) { +                /* Backward compatibility handling for scrub status command*/ +                if (conf->op_version < GD_OP_VERSION_3_9_0) { +                        snprintf (msg, sizeof (msg), "Cannot execute command. " +                                  "The cluster is operating at version %d. " +                                  "Bitrot scrub ondemand command unavailable in " +                                  "this version", conf->op_version); +                        ret = -1; +                        goto out; +                } + +                ret = dict_get_str (dict, "scrub-value", &scrub); +                if (ret) { +                        gf_msg (this->name, GF_LOG_ERROR, 0, +                                GD_MSG_DICT_GET_FAILED, +                                "Failed to get scrub value."); +                        ret = -1; +                        goto out; +                } + +                if (!strncmp (scrub, "ondemand", strlen ("ondemand"))) { +                        ret = glusterd_op_begin_synctask (req, +                                                          GD_OP_SCRUB_ONDEMAND, +                                                          dict); +                        goto out; +                } +        } +          ret = glusterd_op_begin_synctask (req, GD_OP_BITROT, dict);  out: @@ -572,6 +600,7 @@ glusterd_op_bitrot (dict_t *dict, char **op_errstr, dict_t *rsp_dict)                  if (ret)                          goto out;          case GF_BITROT_CMD_SCRUB_STATUS: +        case GF_BITROT_CMD_SCRUB_ONDEMAND:                  break;          default:  | 
