RE: Devel 3.2 branch issues
From: Labun, Marcin <hidden>
Date: 2010-11-22 17:18:06
- the getinfo_super_disks method. I couldn't see why you need this. All the info about the state of the arrays should already be available. If there is something that you need that we don't have, please explain and we can see how best to add it back in.
For external metadata we have added a metadata handler to get a disk state (a spare or not a spare) based on current metadata state on disk. Ioctl(GET_DISK_INFO) does not have a disk state info for containers (returns 0 - so we don't know if it is a spare or a failed disk). We know that a disk is an array member based on check its state in the array. Since Monitor code on devel-3.2 does not have calls to getinfo_super_disks method, auto-rebuild grabs the first disk in container and tries to move it to a degraded one (without a successes), and the first one happens to be array member and have state = 0 (a good spare). Like all disks in container. There is also a fatal in pol_add, when trying to update policy rules with NULL spare_group:
@@ -732,7 +738,8 @@ static int move_spare(struct state *from, struct state *to, continue; pol = devnum_policy(from->devid[d]); - pol_add(&pol, pol_domain, from->spare_group, NULL); + if (from->spare_group) + pol_add(&pol, pol_domain, from->spare_group, NULL);
We will send you our FT integrated with your mdadm test suit in a couple of days. Marcin