Improve reporting of layout for raid10.

Showing e.g.

   near=1, far=2

for the 'far2' layout of raid10 is confusing even though there is a
sense in which is it correct.

Make it less confusing by only printing whichever number is not 1.
If both are 1, make that clear too (i.e. no redundancy).
This commit is contained in:
NeilBrown 2008-10-13 16:15:18 +11:00
parent 2a528478c7
commit e4965ef846
5 changed files with 31 additions and 16 deletions

View File

@ -239,9 +239,9 @@ int Detail(char *dev, int brief, int export, int test, char *homehost)
printf(" Layout : %s\n", c?c:"-unknown-");
}
if (array.level == 10) {
printf(" Layout : near=%d, %s=%d\n",
array.layout&255, (array.layout&0x10000)?"offset":"far",
(array.layout>>8)&255);
printf(" Layout :");
print_r10_layout(array.layout);
printf("\n");
}
switch (array.level) {
case 0:

View File

@ -513,7 +513,8 @@ extern void remove_partitions(int fd);
extern char *human_size(long long bytes);
char *human_size_brief(long long bytes);
extern char *human_size_brief(long long bytes);
extern void print_r10_layout(int layout);
#define NoMdDev (1<<23)
extern int find_free_devnum(int use_partitions);

View File

@ -188,10 +188,9 @@ static void examine_super0(struct supertype *st, char *homehost)
printf(" Layout : %s\n", c?c:"-unknown-");
}
if (sb->level == 10) {
printf(" Layout : near=%d, %s=%d\n",
sb->layout&255,
(sb->layout&0x10000)?"offset":"far",
(sb->layout>>8)&255);
printf(" Layout :");
print_r10_layout(sb->layout);
printf("\n");
}
switch(sb->level) {
case 0:

View File

@ -248,10 +248,9 @@ static void examine_super1(struct supertype *st, char *homehost)
printf(" New Layout : %s\n", c?c:"-unknown-");
}
if (__le32_to_cpu(sb->level) == 10) {
printf(" New Layout : near=%d, %s=%d\n",
__le32_to_cpu(sb->new_layout)&255,
(__le32_to_cpu(sb->new_layout)&0x10000)?"offset":"far",
(__le32_to_cpu(sb->new_layout)>>8)&255);
printf(" New Layout :");
print_r10_layout(__le32_to_cpu(sb->new_layout));
printf("\n");
}
}
if (__le32_to_cpu(sb->new_chunk) != __le32_to_cpu(sb->chunksize))
@ -281,10 +280,9 @@ static void examine_super1(struct supertype *st, char *homehost)
}
if (__le32_to_cpu(sb->level) == 10) {
int lo = __le32_to_cpu(sb->layout);
printf(" Layout : near=%d, %s=%d\n",
lo&255,
(lo&0x10000)?"offset":"far",
(lo>>8)&255);
printf(" Layout :");
print_r10_layout(lo);
printf("\n");
}
switch(__le32_to_cpu(sb->level)) {
case 0:

17
util.c
View File

@ -606,6 +606,23 @@ char *human_size_brief(long long bytes)
);
return buf;
}
void print_r10_layout(int layout)
{
int near = layout & 255;
int far = (layout >> 8) & 255;
int offset = (layout&0x10000);
char *sep = "";
if (near != 1) {
printf("%s near=%d", sep, near);
sep = ",";
}
if (far != 1)
printf("%s %s=%d", sep, offset?"offset":"far", far);
if (near*far == 1)
printf("NO REDUNDANCY");
}
#endif
#if !defined(MDASSEMBLE) || defined(MDASSEMBLE) && defined(MDASSEMBLE_AUTO)