} while (first != 0);
return 1;
- case -4:
+ case LEVEL_MULTIPATH:
return avail_disks>= 1;
- case -1:
+ case LEVEL_LINEAR:
case 0:
return avail_disks == raid_disks;
case 1:
memcpy(a, b, 16);
}
-char *fname_from_uuid(struct supertype *st, struct mdinfo *info, char *buf, char sep)
+char *__fname_from_uuid(int id[4], int swap, char *buf, char sep)
{
int i, j;
- int id;
char uuid[16];
char *c = buf;
strcpy(c, "UUID-");
c += strlen(c);
- copy_uuid(uuid, info->uuid, st->ss->swapuuid);
+ copy_uuid(uuid, id, swap);
for (i = 0; i < 4; i++) {
- id = uuid[i];
if (i)
*c++ = sep;
for (j = 3; j >= 0; j--) {
}
}
return buf;
+
+}
+
+char *fname_from_uuid(struct supertype *st, struct mdinfo *info, char *buf, char sep)
+{
+ return __fname_from_uuid(info->uuid, st->ss->swapuuid, buf, sep);
}
#ifndef MDASSEMBLE
int rv;
#ifndef MDASSEMBLE
if (st->ss->external) {
- rv = sysfs_add_disk(sra, info,
- info->disk.state & (1<<MD_DISK_SYNC));
+ if (info->disk.state & (1<<MD_DISK_SYNC))
+ info->recovery_start = MaxSector;
+ else
+ info->recovery_start = 0;
+ rv = sysfs_add_disk(sra, info);
if (! rv) {
struct mdinfo *sd2;
for (sd2 = sra->devs; sd2; sd2=sd2->next)
char *devnum2devname(int num)
{
char name[100];
- if (num > 0)
+ if (num >= 0)
sprintf(name, "md%d", num);
else
sprintf(name, "md_d%d", -1-num);