return false;
}
+static bool rdev_is_spare(struct md_rdev *rdev)
+{
+ return !test_bit(Candidate, &rdev->flags) && rdev->raid_disk >= 0 &&
+ !test_bit(In_sync, &rdev->flags) &&
+ !test_bit(Journal, &rdev->flags) &&
+ !test_bit(Faulty, &rdev->flags);
+}
+
static int remove_and_add_spares(struct mddev *mddev,
struct md_rdev *this)
{
rdev_for_each(rdev, mddev) {
if (this && this != rdev)
continue;
+ if (rdev_is_spare(rdev))
+ spares++;
if (test_bit(Candidate, &rdev->flags))
continue;
- if (rdev->raid_disk >= 0 &&
- !test_bit(In_sync, &rdev->flags) &&
- !test_bit(Journal, &rdev->flags) &&
- !test_bit(Faulty, &rdev->flags))
- spares++;
if (rdev->raid_disk >= 0)
continue;
if (test_bit(Faulty, &rdev->flags))