Add names for all primary RAID levels defined by DDF 2.0 specification.
This commit is contained in:
parent
e26083ca69
commit
dbb2e75504
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=234603
@ -277,31 +277,87 @@ g_raid_volume_level2str(int level, int qual)
|
||||
case G_RAID_VOLUME_RL_RAID1:
|
||||
return ("RAID1");
|
||||
case G_RAID_VOLUME_RL_RAID3:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R3P0)
|
||||
return ("RAID3-P0");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R3PN)
|
||||
return ("RAID3-PN");
|
||||
return ("RAID3");
|
||||
case G_RAID_VOLUME_RL_RAID4:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R4P0)
|
||||
return ("RAID3-P0");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R4PN)
|
||||
return ("RAID3-PN");
|
||||
return ("RAID4");
|
||||
case G_RAID_VOLUME_RL_RAID5:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RA)
|
||||
return ("RAID5RA");
|
||||
return ("RAID5-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RS)
|
||||
return ("RAID5RS");
|
||||
return ("RAID5-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5LA)
|
||||
return ("RAID5LA");
|
||||
return ("RAID5-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5LS)
|
||||
return ("RAID5LS");
|
||||
return ("RAID5-LS");
|
||||
return ("RAID5");
|
||||
case G_RAID_VOLUME_RL_RAID6:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R6RA)
|
||||
return ("RAID6-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R6RS)
|
||||
return ("RAID6-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R6LA)
|
||||
return ("RAID6-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R6LS)
|
||||
return ("RAID6-LS");
|
||||
return ("RAID6");
|
||||
case G_RAID_VOLUME_RL_RAIDMDF:
|
||||
if (qual == G_RAID_VOLUME_RLQ_RMDFRA)
|
||||
return ("RAIDMDF-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_RMDFRS)
|
||||
return ("RAIDMDF-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_RMDFLA)
|
||||
return ("RAIDMDF-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_RMDFLS)
|
||||
return ("RAIDMDF-LS");
|
||||
return ("RAIDMDF");
|
||||
case G_RAID_VOLUME_RL_RAID1E:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R1EA)
|
||||
return ("RAID1E-A");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R1EO)
|
||||
return ("RAID1E-O");
|
||||
return ("RAID1E");
|
||||
case G_RAID_VOLUME_RL_SINGLE:
|
||||
return ("SINGLE");
|
||||
case G_RAID_VOLUME_RL_CONCAT:
|
||||
return ("CONCAT");
|
||||
case G_RAID_VOLUME_RL_RAID5E:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5ERA)
|
||||
return ("RAID5E-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5ERS)
|
||||
return ("RAID5E-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5ELA)
|
||||
return ("RAID5E-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5ELS)
|
||||
return ("RAID5E-LS");
|
||||
return ("RAID5E");
|
||||
case G_RAID_VOLUME_RL_RAID5EE:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5EERA)
|
||||
return ("RAID5EE-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5EERS)
|
||||
return ("RAID5EE-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5EELA)
|
||||
return ("RAID5EE-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5EELS)
|
||||
return ("RAID5EE-LS");
|
||||
return ("RAID5EE");
|
||||
case G_RAID_VOLUME_RL_RAID5R:
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RRA)
|
||||
return ("RAID5R-RA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RRS)
|
||||
return ("RAID5R-RS");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RLA)
|
||||
return ("RAID5R-LA");
|
||||
if (qual == G_RAID_VOLUME_RLQ_R5RLS)
|
||||
return ("RAID5R-LS");
|
||||
return ("RAID5E");
|
||||
default:
|
||||
return ("UNKNOWN");
|
||||
}
|
||||
@ -317,37 +373,111 @@ g_raid_volume_str2level(const char *str, int *level, int *qual)
|
||||
*level = G_RAID_VOLUME_RL_RAID0;
|
||||
else if (strcasecmp(str, "RAID1") == 0)
|
||||
*level = G_RAID_VOLUME_RL_RAID1;
|
||||
else if (strcasecmp(str, "RAID3") == 0)
|
||||
else if (strcasecmp(str, "RAID3-P0") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID3;
|
||||
else if (strcasecmp(str, "RAID4") == 0)
|
||||
*qual = G_RAID_VOLUME_RLQ_R3P0;
|
||||
} else if (strcasecmp(str, "RAID3-PN") == 0 &&
|
||||
strcasecmp(str, "RAID3") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID3;
|
||||
*qual = G_RAID_VOLUME_RLQ_R3P0;
|
||||
} else if (strcasecmp(str, "RAID4-P0") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID4;
|
||||
else if (strcasecmp(str, "RAID5RA") == 0) {
|
||||
*qual = G_RAID_VOLUME_RLQ_R4P0;
|
||||
} else if (strcasecmp(str, "RAID4-PN") == 0 &&
|
||||
strcasecmp(str, "RAID4") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID4;
|
||||
*qual = G_RAID_VOLUME_RLQ_R4P0;
|
||||
} else if (strcasecmp(str, "RAID5-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RA;
|
||||
} else if (strcasecmp(str, "RAID5RS") == 0) {
|
||||
} else if (strcasecmp(str, "RAID5-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RS;
|
||||
} else if (strcasecmp(str, "RAID5") == 0 ||
|
||||
strcasecmp(str, "RAID5LA") == 0) {
|
||||
strcasecmp(str, "RAID5-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5LA;
|
||||
} else if (strcasecmp(str, "RAID5LS") == 0) {
|
||||
} else if (strcasecmp(str, "RAID5-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5LS;
|
||||
} else if (strcasecmp(str, "RAID6") == 0)
|
||||
} else if (strcasecmp(str, "RAID6-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID6;
|
||||
else if (strcasecmp(str, "RAID10") == 0 ||
|
||||
strcasecmp(str, "RAID1E") == 0)
|
||||
*qual = G_RAID_VOLUME_RLQ_R6RA;
|
||||
} else if (strcasecmp(str, "RAID6-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID6;
|
||||
*qual = G_RAID_VOLUME_RLQ_R6RS;
|
||||
} else if (strcasecmp(str, "RAID6") == 0 ||
|
||||
strcasecmp(str, "RAID6-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID6;
|
||||
*qual = G_RAID_VOLUME_RLQ_R6LA;
|
||||
} else if (strcasecmp(str, "RAID6-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID6;
|
||||
*qual = G_RAID_VOLUME_RLQ_R6LS;
|
||||
} else if (strcasecmp(str, "RAIDMDF-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAIDMDF;
|
||||
*qual = G_RAID_VOLUME_RLQ_RMDFRA;
|
||||
} else if (strcasecmp(str, "RAIDMDF-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAIDMDF;
|
||||
*qual = G_RAID_VOLUME_RLQ_RMDFRS;
|
||||
} else if (strcasecmp(str, "RAIDMDF") == 0 ||
|
||||
strcasecmp(str, "RAIDMDF-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAIDMDF;
|
||||
*qual = G_RAID_VOLUME_RLQ_RMDFLA;
|
||||
} else if (strcasecmp(str, "RAIDMDF-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAIDMDF;
|
||||
*qual = G_RAID_VOLUME_RLQ_RMDFLS;
|
||||
} else if (strcasecmp(str, "RAID10") == 0 ||
|
||||
strcasecmp(str, "RAID1E") == 0 ||
|
||||
strcasecmp(str, "RAID1E-A") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID1E;
|
||||
else if (strcasecmp(str, "SINGLE") == 0)
|
||||
*qual = G_RAID_VOLUME_RLQ_R1EA;
|
||||
} else if (strcasecmp(str, "RAID1E-O") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID1E;
|
||||
*qual = G_RAID_VOLUME_RLQ_R1EO;
|
||||
} else if (strcasecmp(str, "SINGLE") == 0)
|
||||
*level = G_RAID_VOLUME_RL_SINGLE;
|
||||
else if (strcasecmp(str, "CONCAT") == 0)
|
||||
*level = G_RAID_VOLUME_RL_CONCAT;
|
||||
else if (strcasecmp(str, "RAID5E") == 0)
|
||||
else if (strcasecmp(str, "RAID5E-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5E;
|
||||
else if (strcasecmp(str, "RAID5EE") == 0)
|
||||
*qual = G_RAID_VOLUME_RLQ_R5ERA;
|
||||
} else if (strcasecmp(str, "RAID5E-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5E;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5ERS;
|
||||
} else if (strcasecmp(str, "RAID5E") == 0 ||
|
||||
strcasecmp(str, "RAID5E-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5E;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5ELA;
|
||||
} else if (strcasecmp(str, "RAID5E-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5E;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5ELS;
|
||||
} else if (strcasecmp(str, "RAID5EE-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5EE;
|
||||
else
|
||||
*qual = G_RAID_VOLUME_RLQ_R5EERA;
|
||||
} else if (strcasecmp(str, "RAID5EE-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5EE;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5EERS;
|
||||
} else if (strcasecmp(str, "RAID5EE") == 0 ||
|
||||
strcasecmp(str, "RAID5EE-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5EE;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5EELA;
|
||||
} else if (strcasecmp(str, "RAID5EE-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5EE;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5EELS;
|
||||
} else if (strcasecmp(str, "RAID5R-RA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5R;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RRA;
|
||||
} else if (strcasecmp(str, "RAID5R-RS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5R;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RRS;
|
||||
} else if (strcasecmp(str, "RAID5R") == 0 ||
|
||||
strcasecmp(str, "RAID5R-LA") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5R;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RLA;
|
||||
} else if (strcasecmp(str, "RAID5R-LS") == 0) {
|
||||
*level = G_RAID_VOLUME_RL_RAID5R;
|
||||
*qual = G_RAID_VOLUME_RLQ_R5RLS;
|
||||
} else
|
||||
return (-1);
|
||||
return (0);
|
||||
}
|
||||
|
@ -219,18 +219,48 @@ struct g_raid_subdisk {
|
||||
#define G_RAID_VOLUME_RL_RAID4 0x04
|
||||
#define G_RAID_VOLUME_RL_RAID5 0x05
|
||||
#define G_RAID_VOLUME_RL_RAID6 0x06
|
||||
#define G_RAID_VOLUME_RL_RAIDMDF 0x07
|
||||
#define G_RAID_VOLUME_RL_RAID1E 0x11
|
||||
#define G_RAID_VOLUME_RL_SINGLE 0x0f
|
||||
#define G_RAID_VOLUME_RL_CONCAT 0x1f
|
||||
#define G_RAID_VOLUME_RL_RAID5E 0x15
|
||||
#define G_RAID_VOLUME_RL_RAID5EE 0x25
|
||||
#define G_RAID_VOLUME_RL_RAID5R 0x35
|
||||
#define G_RAID_VOLUME_RL_UNKNOWN 0xff
|
||||
|
||||
#define G_RAID_VOLUME_RLQ_NONE 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R1SM 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R1MM 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R3P0 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R3PN 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R4P0 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R4PN 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5RA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R5RS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5LA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_R5LS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_R6RA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R6RS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R6LA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_R6LS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_RMDFRA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_RMDFRS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_RMDFLA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_RMDFLS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_R1EA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R1EO 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5ERA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R5ERS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5ELA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_R5ELS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_R5EERA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R5EERS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5EELA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_R5EELS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_R5RRA 0x00
|
||||
#define G_RAID_VOLUME_RLQ_R5RRS 0x01
|
||||
#define G_RAID_VOLUME_RLQ_R5RLA 0x02
|
||||
#define G_RAID_VOLUME_RLQ_R5RLS 0x03
|
||||
#define G_RAID_VOLUME_RLQ_UNKNOWN 0xff
|
||||
|
||||
struct g_raid_volume;
|
||||
|
@ -145,7 +145,8 @@ g_raid_tr_taste_raid1(struct g_raid_tr_object *tr, struct g_raid_volume *vol)
|
||||
|
||||
trs = (struct g_raid_tr_raid1_object *)tr;
|
||||
if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_RAID1 ||
|
||||
tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE)
|
||||
(tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_R1SM &&
|
||||
tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_R1MM))
|
||||
return (G_RAID_TR_TASTE_FAIL);
|
||||
trs->trso_starting = 1;
|
||||
return (G_RAID_TR_TASTE_SUCCEED);
|
||||
|
@ -187,7 +187,7 @@ g_raid_tr_taste_raid1e(struct g_raid_tr_object *tr, struct g_raid_volume *vol)
|
||||
|
||||
trs = (struct g_raid_tr_raid1e_object *)tr;
|
||||
if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_RAID1E ||
|
||||
tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_NONE)
|
||||
tr->tro_volume->v_raid_level_qualifier != G_RAID_VOLUME_RLQ_R1EA)
|
||||
return (G_RAID_TR_TASTE_FAIL);
|
||||
trs->trso_starting = 1;
|
||||
return (G_RAID_TR_TASTE_SUCCEED);
|
||||
|
Loading…
Reference in New Issue
Block a user