diff options
Diffstat (limited to 'drivers/md/raid10.c')
| -rw-r--r-- | drivers/md/raid10.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 1c2eb38f3c5..0138a727c1f 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1512,14 +1512,16 @@ static int _enough(struct r10conf *conf, struct geom *geo, int ignore)  	do {  		int n = conf->copies;  		int cnt = 0; +		int this = first;  		while (n--) { -			if (conf->mirrors[first].rdev && -			    first != ignore) +			if (conf->mirrors[this].rdev && +			    this != ignore)  				cnt++; -			first = (first+1) % geo->raid_disks; +			this = (this+1) % geo->raid_disks;  		}  		if (cnt == 0)  			return 0; +		first = (first + geo->near_copies) % geo->raid_disks;  	} while (first != 0);  	return 1;  }  |