diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 16 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 4 | 
2 files changed, 19 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index f1b1a3c0c59..65ecd31048c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -7225,6 +7225,7 @@ glusterd_restart_rebalance_for_volume (glusterd_volinfo_t *volinfo)          if (!volinfo->rebal.defrag_cmd)                  return -1; +          if (!gd_should_i_start_rebalance (volinfo)) {                  /* Store the rebalance-id and rebalance command even if @@ -7241,7 +7242,20 @@ glusterd_restart_rebalance_for_volume (glusterd_volinfo_t *volinfo)                  return 0;          }          ret = glusterd_volume_defrag_restart (volinfo, op_errstr, PATH_MAX, -                                volinfo->rebal.defrag_cmd, NULL); +                                volinfo->rebal.defrag_cmd, +                                volinfo->rebal.op == GD_OP_REMOVE_BRICK ? +                                glusterd_remove_brick_migrate_cbk : NULL); +        if (!ret) { +                /* If remove brick is started then ensure that on a glusterd +                 * restart decommission_is_in_progress is set to avoid remove +                 * brick commit to happen when rebalance is not completed. +                 */ +                if (volinfo->rebal.op == GD_OP_REMOVE_BRICK && +                    volinfo->rebal.defrag_status == GF_DEFRAG_STATUS_STARTED) { +                        volinfo->decommission_in_progress = 1; +                } +        } +          return ret;  }  int diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index a710a08954a..34de8801385 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -1168,4 +1168,8 @@ glusterd_handle_snap_limit (dict_t *dict, dict_t *rsp_dict);  gf_boolean_t  glusterd_should_i_stop_bitd (); +int +glusterd_remove_brick_migrate_cbk (glusterd_volinfo_t *volinfo, +                                   gf_defrag_status_t status); +  #endif  | 
