]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
super1: make sure max_dev grows enough when adding a device to an array.
authorNeilBrown <neilb@suse.de>
Sun, 8 Mar 2009 22:59:39 +0000 (09:59 +1100)
committerNeilBrown <neilb@suse.de>
Sun, 8 Mar 2009 22:59:39 +0000 (09:59 +1100)
There was a few kernel releases where the kernel would shrink max_dev
to be just enough to hold the current number of devices.
More recent kernels never shrink it.
However to be as compatible as possible, if we notice that
max_dev is too small to successfully add a device, increase it.

Signed-off-by: NeilBrown <neilb@suse.de>
super1.c

index 1eb88aac1d4f39371ba5b34fed8e001b19b62b14..134241249736f552412f7d943c51ee68682d22b3 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -795,6 +795,9 @@ static void add_to_super1(struct supertype *st, mdu_disk_info_t *dk)
                *rp = 0xffff;
        else
                *rp = 0xfffe;
+       if (dk->number >= __le32_to_cpu(sb->max_dev) &&
+           __le32_to_cpu(sb->max_dev) < 384)
+               sb->max_dev = __cpu_to_le32(dk->number+1);
 }
 
 static void locate_bitmap1(struct supertype *st, int fd);