From 6a67848ab6dc389634673fda3ec867539a763f38 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 30 Oct 2012 13:34:54 +1100 Subject: [PATCH] Grow: fix reshape from RAID5 to RAID1. Commit 5da9ab9874cb5896023afae1462550d83a869831 Grow_reshape re-factor in mdadm-3.2 broke conversion from RAID5 and RAID1 - and we never noticed. This fixes it. Signed-off-by: NeilBrown --- Grow.c | 4 +++- sysfs.c | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Grow.c b/Grow.c index 4de80299..205110cc 100644 --- a/Grow.c +++ b/Grow.c @@ -1281,7 +1281,9 @@ char *analyse_change(struct mdinfo *info, struct reshape *re) return "Cannot set raid_disk when " "converting RAID5->RAID1"; re->level = 1; - break; + re->backup_blocks = 0; + info->new_chunk = 0; + return NULL; default: return "Impossible level change requested"; } diff --git a/sysfs.c b/sysfs.c index a7ff38a4..b66cebf3 100644 --- a/sysfs.c +++ b/sysfs.c @@ -176,8 +176,10 @@ struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options) if (options & GET_CACHE) { strcpy(base, "stripe_cache_size"); if (load_sys(fname, buf)) - goto abort; - sra->cache_size = strtoul(buf, NULL, 0); + /* Probably level doesn't support it */ + sra->cache_size = 0; + else + sra->cache_size = strtoul(buf, NULL, 0); } if (options & GET_MISMATCH) { strcpy(base, "mismatch_cnt"); -- 2.39.2