Re: [PATCH] Grow: goto release if Manage_subdevs failed
From: Guoqing Jiang <hidden>
Date: 2016-03-23 01:13:11
Possibly related (same subject, not in this thread)
- 2016-03-22 · [PATCH] Grow: goto release if Manage_subdevs failed · Guoqing Jiang <hidden>
On 03/23/2016 01:54 AM, Jes Sorensen wrote:
Guoqing Jiang [off-list ref] writes:quoted
If failure happened when add disk to array by grow mode, need to goto release instead of continue the reshape. Signed-off-by: Guoqing Jiang <redacted> --- Grow.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)diff --git a/Grow.c b/Grow.c index cf2750a..1767a1e 100755 --- a/Grow.c +++ b/Grow.c@@ -3003,8 +3003,9 @@ static int reshape_array(char *container, int fd, char *devname, * level and frozen, we can safely add them. */ if (devlist) - Manage_subdevs(devname, fd, devlist, verbose, - 0,NULL, 0); + if (Manage_subdevs(devname, fd, devlist, verbose, + 0,NULL, 0)) + goto release; if (reshape.backup_blocks == 0 && data_offset != INVALID_SECTORS) reshape.backup_blocks = reshape.before.data_disks * info->array.chunk_size/512;Applied with minor mod to add brackets to the outer if() case - I hope you are OK with this.
Thanks, I am fine with it :). Regards, Guoqing
quoted hunk ↗ jump to hunk
Cheers, Jes From 31dbeda730ab1c25040f2e9b5bc49008b8519adf Mon Sep 17 00:00:00 2001 From: Guoqing Jiang <redacted> Date: Tue, 22 Mar 2016 17:03:44 +0800 Subject: [PATCH] Grow: goto release if Manage_subdevs failed If failure happened when add disk to array by grow mode, need to goto release instead of continue the reshape. Signed-off-by: Guoqing Jiang <redacted> Signed-off-by: Jes Sorensen <redacted> --- Grow.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)diff --git a/Grow.c b/Grow.c index 3204135..5953db2 100755 --- a/Grow.c +++ b/Grow.c@@ -3009,9 +3009,11 @@ static int reshape_array(char *container, int fd, char *devname, * array. Now that the array has been changed to the right * level and frozen, we can safely add them. */ - if (devlist) - Manage_subdevs(devname, fd, devlist, verbose, - 0,NULL, 0); + if (devlist) { + if (Manage_subdevs(devname, fd, devlist, verbose, + 0, NULL, 0)) + goto release; + } if (reshape.backup_blocks == 0 && data_offset != INVALID_SECTORS) reshape.backup_blocks = reshape.before.data_disks * info->array.chunk_size/512;