super: make sure to ignore disk state flags that we don't understand.

This make it easier to add new flags that some super-types
don't understand.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2014-08-07 11:34:50 +10:00
parent c9f1cbc050
commit f4dc5e9b7f
2 changed files with 4 additions and 5 deletions

View File

@ -805,9 +805,8 @@ static int add_to_super0(struct supertype *st, mdu_disk_info_t *dinfo,
dk->major = dinfo->major;
dk->minor = dinfo->minor;
dk->raid_disk = dinfo->raid_disk;
dk->state = dinfo->state;
/* In case our source disk was writemostly, don't copy that bit */
dk->state &= ~(1<<MD_DISK_WRITEMOSTLY);
dk->state = dinfo->state & ((1<<MD_DISK_ACTIVE) |
(1<<MD_DISK_SYNC));
sb->this_disk = sb->disks[dinfo->number];
sb->sb_csum = calc_sb0_csum(sb);
@ -887,7 +886,7 @@ static int write_init_super0(struct supertype *st)
for (di = st->info ; di && ! rv ; di = di->next) {
if (di->disk.state == 1)
if (di->disk.state & (1 << MD_DISK_FAULTY))
continue;
if (di->fd == -1)
continue;

View File

@ -1557,7 +1557,7 @@ static int write_init_super1(struct supertype *st)
unsigned long long data_offset;
for (di = st->info; di; di = di->next) {
if (di->disk.state == 1)
if (di->disk.state & (1 << MD_DISK_FAULTY))
continue;
if (di->fd < 0)
continue;