107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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
 | |
| 
 |