summaryrefslogtreecommitdiffstats
path: root/super1.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-06-26 12:26:09 +1000
committerNeil Brown <neilb@suse.de>2006-06-26 12:26:09 +1000
commit7eae7080e2e9edd69d31ae2c88d9e28d1c24217c (patch)
tree4418e400c725690d29f3e66752515bab63f3fe77 /super1.c
parentc3684618b7cc50a12a651bf2f83f62b24ba95bcd (diff)
downloadmdadm-7eae7080e2e9edd69d31ae2c88d9e28d1c24217c.tar.gz
mdadm-7eae7080e2e9edd69d31ae2c88d9e28d1c24217c.tar.xz
mdadm-7eae7080e2e9edd69d31ae2c88d9e28d1c24217c.zip
Work around bug in --add handling for version-1 superblocks
In 2.6.17 (and prior), the dev_number is ignored when a device is added to an active array. Rather the first free number is used. So we work around this by making sure we use the first free number for dev_number. Description...
Diffstat (limited to 'super1.c')
-rw-r--r--super1.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/super1.c b/super1.c
index 6862155..8e6703b 100644
--- a/super1.c
+++ b/super1.c
@@ -779,7 +779,11 @@ static int write_init_super1(struct supertype *st, void *sbv,
if (memcmp(sb->set_uuid, refsb->set_uuid, 16)==0) {
/* same array, so preserve events and dev_number */
sb->events = refsb->events;
- sb->dev_number = refsb->dev_number;
+ /* bugs in 2.6.17 and earlier mean the dev_number
+ * chosen in Manage must be preserved
+ */
+ if (get_linux_version() >= 2006018)
+ sb->dev_number = refsb->dev_number;
}
free(refsb);
}