diff options
author | Maciej Trela <maciej.trela@intel.com> | 2010-06-16 11:56:12 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2010-06-24 13:34:57 +1000 |
commit | 049d6c1ef983c9ac43aa423dfd752071a5b0002d (patch) | |
tree | 909db6119d7b96991fa724b633c2ee185474836d | |
parent | 001048a318d48e93cb6a1246f3b20335b2a7c855 (diff) | |
download | linux-3.10-049d6c1ef983c9ac43aa423dfd752071a5b0002d.tar.gz linux-3.10-049d6c1ef983c9ac43aa423dfd752071a5b0002d.tar.bz2 linux-3.10-049d6c1ef983c9ac43aa423dfd752071a5b0002d.zip |
md: enable raid4->raid0 takeover
Only level 5 with layout=PARITY_N can be taken over to raid0 now.
Lets allow level 4 either.
Signed-off-by: Maciej Trela <maciej.trela@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | drivers/md/raid0.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index ac09b7d3855..563abed5a2c 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -569,7 +569,7 @@ static void raid0_status(struct seq_file *seq, mddev_t *mddev) return; } -static void *raid0_takeover_raid5(mddev_t *mddev) +static void *raid0_takeover_raid45(mddev_t *mddev) { mdk_rdev_t *rdev; raid0_conf_t *priv_conf; @@ -647,12 +647,16 @@ static void *raid0_takeover_raid10(mddev_t *mddev) static void *raid0_takeover(mddev_t *mddev) { /* raid0 can take over: + * raid4 - if all data disks are active. * raid5 - providing it is Raid4 layout and one disk is faulty * raid10 - assuming we have all necessary active disks */ + if (mddev->level == 4) + return raid0_takeover_raid45(mddev); + if (mddev->level == 5) { if (mddev->layout == ALGORITHM_PARITY_N) - return raid0_takeover_raid5(mddev); + return raid0_takeover_raid45(mddev); printk(KERN_ERR "md/raid0:%s: Raid can only takeover Raid5 with layout: %d\n", mdname(mddev), ALGORITHM_PARITY_N); |