Re: [PATCH 2/2] imsm: Update metadata for second array
flat view
From: NeilBrown <hidden>
Date: 2011-01-31 23:23:03
On Mon, 31 Jan 2011 09:28:54 +0000 "Kwolek, Adam" [off-list ref] wrote:
quoted
-----Original Message----- From: linux-raid-owner@vger.kernel.org [mailto:linux-raid- owner@vger.kernel.org] On Behalf Of NeilBrown Sent: Monday, January 31, 2011 10:19 AM To: Kwolek, Adam Cc: linux-raid@vger.kernel.org; Williams, Dan J; Ciechanowski, Ed; Neubauer, Wojciech Subject: Re: [PATCH 2/2] imsm: Update metadata for second array On Mon, 31 Jan 2011 09:59:30 +0100 Adam Kwolek [off-list ref] wrote:quoted
When second array reshape is about to start external metadata shouldbe updatedquoted
by mdmon in imsm_set_array_state(). For this purposes imsm_progress_container_reshape() is reused. Signed-off-by: Adam Kwolek <redacted> --- super-intel.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)diff --git a/super-intel.c b/super-intel.c index 8484df6..0ab4355 100644 --- a/super-intel.c +++ b/super-intel.c@@ -5249,13 +5249,17 @@ static int imsm_set_array_state(structactive_array *a, int consistent)quoted
super->updates_pending++; } - /* finalize online capacity expansion/reshape */ + /* manage online capacity expansion/reshape */ if ((a->curr_action != reshape) && (a->prev_action == reshape)) { struct mdinfo *mdi; + /* finalize online capacity expansion/reshape */ for (mdi = a->info.devs; mdi; mdi = mdi->next) imsm_set_disk(a, mdi->disk.raid_disk, mdi- curr_state); + + /* check next volume reshape */ + imsm_progress_container_reshape(super); } return consistent;You still haven't explained why you need this extra call to imsm_progress_container_reshape. Does the other call never get reached? or does it do the wrong thing? or is it called too early? or too late or ..... NeilBrownCall to imsm_progress_container_reshape() placed above (super-intel.c:5186), cannot be used as it is called for currently migrated volume only. If we finish migration it will be never be called (guard for migration in progress: super-intel.c:5133) Answer is: It is never called for no migration in progress (not too early and not too late: never). This a reason I've add second call (after finalizing migration) for next array reshape initiation .
Thanks. I've applied this for now, but I think something is badly messed up in the handling of migration state - it is terribly convoluted. However I don't have time to untangle it just now so I'll just take you patch and hope it doesn't make anything worse :-) Thanks, NeilBrown