}
#ifndef MDASSEMBLE
+static int is_spare(struct imsm_disk *disk)
+{
+ return (disk->status & SPARE_DISK) == SPARE_DISK;
+}
+
+static int is_configured(struct imsm_disk *disk)
+{
+ return (disk->status & CONFIGURED_DISK) == CONFIGURED_DISK;
+}
+
+static int is_failed(struct imsm_disk *disk)
+{
+ return (disk->status & FAILED_DISK) == FAILED_DISK;
+}
+
static void print_imsm_dev(struct imsm_dev *dev, char *uuid, int disk_idx)
{
__u64 sz;
{
struct imsm_disk *disk = __get_imsm_disk(mpb, index);
char str[MAX_RAID_SERIAL_LEN + 1];
- __u32 s;
__u64 sz;
if (index < 0)
printf("\n");
snprintf(str, MAX_RAID_SERIAL_LEN + 1, "%s", disk->serial);
printf(" Disk%02d Serial : %s\n", index, str);
- s = disk->status;
- printf(" State :%s%s%s\n", s&SPARE_DISK ? " spare" : "",
- s&CONFIGURED_DISK ? " active" : "",
- s&FAILED_DISK ? " failed" : "");
+ printf(" State :%s%s%s\n", is_spare(disk) ? " spare" : "",
+ is_configured(disk) ? " active" : "",
+ is_failed(disk) ? " failed" : "");
printf(" Id : %08x\n", __le32_to_cpu(disk->scsi_id));
sz = __le32_to_cpu(disk->total_blocks) - reserved;
printf(" Usable Size : %llu%s\n", (unsigned long long)sz,
{
struct intel_super *super = st->sb;
struct imsm_disk *disk;
- __u32 s;
if (super->current_vol >= 0) {
getinfo_super_imsm_volume(st, info);
disk = &super->disks->disk;
info->data_offset = __le32_to_cpu(disk->total_blocks) - reserved;
info->component_size = reserved;
- s = disk->status;
- info->disk.state = s & CONFIGURED_DISK ? (1 << MD_DISK_ACTIVE) : 0;
+ info->disk.state = is_configured(disk) ? (1 << MD_DISK_ACTIVE) : 0;
/* we don't change info->disk.raid_disk here because
* this state will be finalized in mdmon after we have
* found the 'most fresh' version of the metadata
*/
- info->disk.state |= s & FAILED_DISK ? (1 << MD_DISK_FAULTY) : 0;
- info->disk.state |= s & SPARE_DISK ? 0 : (1 << MD_DISK_SYNC);
+ info->disk.state |= is_failed(disk) ? (1 << MD_DISK_FAULTY) : 0;
+ info->disk.state |= is_spare(disk) ? 0 : (1 << MD_DISK_SYNC);
}
/* only call uuid_from_super_imsm when this disk is part of a populated container,
struct dl *d;
int idx;
int skip;
- __u32 s;
__u32 ord;
skip = 0;
if (d == NULL)
skip = 1;
-
- s = d ? d->disk.status : 0;
- if (s & FAILED_DISK)
+ if (d && is_failed(&d->disk))
skip = 1;
if (ord & IMSM_ORD_REBUILD)
skip = 1;
insync = 2;
disk = get_imsm_disk(super, idx);
- if (!disk || disk->status & FAILED_DISK ||
- ord & IMSM_ORD_REBUILD)
+ if (!disk || is_failed(disk) || ord & IMSM_ORD_REBUILD)
insync--;
/* no in-sync disks left in this mirror the
idx = ord_to_idx(ord);
disk = get_imsm_disk(super, idx);
- if (!disk || disk->status & FAILED_DISK ||
- ord & IMSM_ORD_REBUILD)
+ if (!disk || is_failed(disk) || ord & IMSM_ORD_REBUILD)
failed++;
}
return 0;
ord = __le32_to_cpu(map->disk_ord_tbl[slot]);
- if ((disk->status & FAILED_DISK) && (ord & IMSM_ORD_REBUILD))
+ if (is_failed(disk) && (ord & IMSM_ORD_REBUILD))
return 0;
disk->status |= FAILED_DISK;
if (dl->index == i)
break;
- if (dl && dl->disk.status & FAILED_DISK)
+ if (dl && is_failed(&dl->disk))
dl = NULL;
if (dl)
continue;
/* skip in use or failed drives */
- if (dl->disk.status & FAILED_DISK || idx == dl->index ||
+ if (is_failed(&dl->disk) || idx == dl->index ||
dl->index == -2) {
dprintf("%x:%x status (failed: %d index: %d)\n",
- dl->major, dl->minor,
- (dl->disk.status & FAILED_DISK) == FAILED_DISK, idx);
+ dl->major, dl->minor, is_failed(&dl->disk), idx);
continue;
}
if (i == u->slot)
continue;
disk = get_imsm_disk(super, get_imsm_disk_idx(dev, i));
- if (!disk || disk->status & FAILED_DISK)
+ if (!disk || is_failed(disk))
failed++;
}