Description...

Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
This commit is contained in:
Neil Brown 2006-04-17 23:42:52 +00:00
parent 40842ca294
commit 6fbba4c929
3 changed files with 19 additions and 18 deletions

View File

@ -778,8 +778,8 @@ int main(int argc, char *argv[])
if (raiddisks) { if (raiddisks) {
if (raiddisks > max_disks) { if (raiddisks > max_disks) {
fprintf(stderr, Name ": invalid number of raid devices: %s\n", fprintf(stderr, Name ": invalid number of raid devices: %d\n",
optarg); raiddisks);
exit(2); exit(2);
} }
if (raiddisks == 1 && !force && level != -5) { if (raiddisks == 1 && !force && level != -5) {
@ -791,8 +791,8 @@ int main(int argc, char *argv[])
} }
if (sparedisks) { if (sparedisks) {
if ( sparedisks > max_disks - raiddisks) { if ( sparedisks > max_disks - raiddisks) {
fprintf(stderr, Name ": invalid number of spare-devices: %s\n", fprintf(stderr, Name ": invalid number of spare-devices: %d\n",
optarg); sparedisks);
exit(2); exit(2);
} }
} }

View File

@ -121,7 +121,7 @@ static void examine_super1(void *sbv)
struct mdp_superblock_1 *sb = sbv; struct mdp_superblock_1 *sb = sbv;
time_t atime; time_t atime;
int d; int d;
int spares, faulty; int faulty;
int i; int i;
char *c; char *c;
@ -198,15 +198,12 @@ static void examine_super1(void *sbv)
else if (cnt == 1) printf("u"); else if (cnt == 1) printf("u");
else printf ("_"); else printf ("_");
} }
spares = faulty = 0; faulty = 0;
for (i=0; i< __le32_to_cpu(sb->max_dev); i++) { for (i=0; i< __le32_to_cpu(sb->max_dev); i++) {
int role = __le16_to_cpu(sb->dev_roles[i]); int role = __le16_to_cpu(sb->dev_roles[i]);
switch (role) { if (role == 0xFFFE)
case 0xFFFF: spares++; break; faulty++;
case 0xFFFE: faulty++;
}
} }
if (spares) printf(" %d spares", spares);
if (faulty) printf(" %d failed", faulty); if (faulty) printf(" %d failed", faulty);
printf("\n"); printf("\n");
} }
@ -441,7 +438,7 @@ static void add_to_super1(void *sbv, mdu_disk_info_t *dk)
static int store_super1(struct supertype *st, int fd, void *sbv) static int store_super1(struct supertype *st, int fd, void *sbv)
{ {
struct mdp_superblock_1 *sb = sbv; struct mdp_superblock_1 *sb = sbv;
long long sb_offset; unsigned long long sb_offset;
int sbsize; int sbsize;
long size; long size;
@ -467,7 +464,7 @@ static int store_super1(struct supertype *st, int fd, void *sbv)
sb_offset &= ~(4*2-1); sb_offset &= ~(4*2-1);
break; break;
case 1: case 1:
sb->super_offset = __cpu_to_le64(0); sb_offset = 0;
break; break;
case 2: case 2:
sb_offset = 4*2; sb_offset = 4*2;
@ -478,14 +475,14 @@ static int store_super1(struct supertype *st, int fd, void *sbv)
if (sb_offset != (__le64_to_cpu(sb->super_offset) << 9 ) && if (sb_offset != __le64_to_cpu(sb->super_offset) &&
0 != (__le64_to_cpu(sb->super_offset) << 9 ) 0 != __le64_to_cpu(sb->super_offset)
) { ) {
fprintf(stderr, Name ": internal error - sb_offset is wrong\n"); fprintf(stderr, Name ": internal error - sb_offset is wrong\n");
abort(); abort();
} }
if (lseek64(fd, sb_offset, 0)< 0LL) if (lseek64(fd, sb_offset << 9, 0)< 0LL)
return 3; return 3;
sbsize = sizeof(*sb) + 2 * __le32_to_cpu(sb->max_dev); sbsize = sizeof(*sb) + 2 * __le32_to_cpu(sb->max_dev);

8
util.c
View File

@ -537,11 +537,15 @@ struct supertype *super_by_version(int vers, int minor)
{ {
struct supertype *st = malloc(sizeof(*st)); struct supertype *st = malloc(sizeof(*st));
if (!st) return st; if (!st) return st;
if (vers == 0) if (vers == 0) {
st->ss = &super0; st->ss = &super0;
st->max_devs = MD_SB_DISKS;
}
if (vers == 1) if (vers == 1) {
st->ss = &super1; st->ss = &super1;
st->max_devs = 384;
}
st->minor_version = minor; st->minor_version = minor;
return st; return st;
} }