You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.3 KiB
107 lines
3.3 KiB
From 4345e135c4c7dd04bb15bad140dfc4747f677738 Mon Sep 17 00:00:00 2001
|
|
From: Mateusz Kusiak <mateusz.kusiak@intel.com>
|
|
Date: Mon, 2 Jan 2023 09:35:21 +0100
|
|
Subject: [PATCH 73/83] super-intel: refactor the code for enum
|
|
|
|
It prepares super-intel for change context->update to enum.
|
|
|
|
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
|
|
Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
|
|
---
|
|
super-intel.c | 37 +++++++++++++++++++++++++------------
|
|
1 file changed, 25 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/super-intel.c b/super-intel.c
|
|
index 5f93f3d3..85fb7f17 100644
|
|
--- a/super-intel.c
|
|
+++ b/super-intel.c
|
|
@@ -3930,7 +3930,8 @@ static int update_super_imsm(struct supertype *st, struct mdinfo *info,
|
|
|
|
mpb = super->anchor;
|
|
|
|
- if (strcmp(update, "uuid") == 0) {
|
|
+ switch (map_name(update_options, update)) {
|
|
+ case UOPT_UUID:
|
|
/* We take this to mean that the family_num should be updated.
|
|
* However that is much smaller than the uuid so we cannot really
|
|
* allow an explicit uuid to be given. And it is hard to reliably
|
|
@@ -3954,10 +3955,14 @@ static int update_super_imsm(struct supertype *st, struct mdinfo *info,
|
|
}
|
|
if (rv == 0)
|
|
mpb->orig_family_num = info->uuid[0];
|
|
- } else if (strcmp(update, "assemble") == 0)
|
|
+ break;
|
|
+ case UOPT_SPEC_ASSEMBLE:
|
|
rv = 0;
|
|
- else
|
|
+ break;
|
|
+ default:
|
|
rv = -1;
|
|
+ break;
|
|
+ }
|
|
|
|
/* successful update? recompute checksum */
|
|
if (rv == 0)
|
|
@@ -7889,17 +7894,25 @@ static int kill_subarray_imsm(struct supertype *st, char *subarray_id)
|
|
return 0;
|
|
}
|
|
|
|
-static int get_rwh_policy_from_update(char *update)
|
|
+/**
|
|
+ * get_rwh_policy_from_update() - Get the rwh policy for update option.
|
|
+ * @update: Update option.
|
|
+ */
|
|
+static int get_rwh_policy_from_update(enum update_opt update)
|
|
{
|
|
- if (strcmp(update, "ppl") == 0)
|
|
+ switch (update) {
|
|
+ case UOPT_PPL:
|
|
return RWH_MULTIPLE_DISTRIBUTED;
|
|
- else if (strcmp(update, "no-ppl") == 0)
|
|
+ case UOPT_NO_PPL:
|
|
return RWH_MULTIPLE_OFF;
|
|
- else if (strcmp(update, "bitmap") == 0)
|
|
+ case UOPT_BITMAP:
|
|
return RWH_BITMAP;
|
|
- else if (strcmp(update, "no-bitmap") == 0)
|
|
+ case UOPT_NO_BITMAP:
|
|
return RWH_OFF;
|
|
- return -1;
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+ return UOPT_UNDEFINED;
|
|
}
|
|
|
|
static int update_subarray_imsm(struct supertype *st, char *subarray,
|
|
@@ -7909,7 +7922,7 @@ static int update_subarray_imsm(struct supertype *st, char *subarray,
|
|
struct intel_super *super = st->sb;
|
|
struct imsm_super *mpb = super->anchor;
|
|
|
|
- if (strcmp(update, "name") == 0) {
|
|
+ if (map_name(update_options, update) == UOPT_NAME) {
|
|
char *name = ident->name;
|
|
char *ep;
|
|
int vol;
|
|
@@ -7943,7 +7956,7 @@ static int update_subarray_imsm(struct supertype *st, char *subarray,
|
|
}
|
|
super->updates_pending++;
|
|
}
|
|
- } else if (get_rwh_policy_from_update(update) != -1) {
|
|
+ } else if (get_rwh_policy_from_update(map_name(update_options, update)) != UOPT_UNDEFINED) {
|
|
int new_policy;
|
|
char *ep;
|
|
int vol = strtoul(subarray, &ep, 10);
|
|
@@ -7951,7 +7964,7 @@ static int update_subarray_imsm(struct supertype *st, char *subarray,
|
|
if (*ep != '\0' || vol >= super->anchor->num_raid_devs)
|
|
return 2;
|
|
|
|
- new_policy = get_rwh_policy_from_update(update);
|
|
+ new_policy = get_rwh_policy_from_update(map_name(update_options, update));
|
|
|
|
if (st->update_tail) {
|
|
struct imsm_update_rwh_policy *u = xmalloc(sizeof(*u));
|
|
--
|
|
2.38.1
|
|
|