Linux RAID subsystem development
 help / color / mirror / Atom feed
* [PATCH 1/3] FIX: Do not allow for multiple reshape_array() execution during reshape_container() call
@ 2011-12-13 10:12 Adam Kwolek
  2011-12-13 10:12 ` [PATCH 2/3] FIX: Add error message in container_reshape() Adam Kwolek
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Adam Kwolek @ 2011-12-13 10:12 UTC (permalink / raw)
  To: neilb; +Cc: linux-raid, ed.ciechanowski, marcin.labun, dan.j.williams

It can happen during reshape restart that reshape_array() can exit without
error (e.g. Grow.c:1915) and reshape is not moved to next array.
reshape_array() is called again for the same device.
Do not allow for such execution and check if last reshaped array is not
the current one.
This patch can be treat not as solution, but it allows for such errors
detection.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
---

 Grow.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/Grow.c b/Grow.c
index 184a973..1828f83 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2462,6 +2462,7 @@ int reshape_container(char *container, char *devname,
 {
 	struct mdinfo *cc = NULL;
 	int rv = restart;
+	int last_devnum = -1;
 
 	/* component_size is not meaningful for a container,
 	 * so pass '-1' meaning 'no change'
@@ -2546,6 +2547,17 @@ int reshape_container(char *container, char *devname,
 		if (!adev)
 			adev = content->text_version;
 
+		if (last_devnum == mdstat->devnum) {
+			/* do not allow for reentry reshape_array()
+			 * for the same device. It can happen when resahpe_array
+			 */
+			printf(Name ": Multiple reshape execution detected for "
+			       "device  %s.", adev);
+			close(fd);
+			break;
+		}
+		last_devnum = mdstat->devnum;
+
 		sysfs_init(content, fd, mdstat->devnum);
 
 		rv = reshape_array(container, fd, adev, st,


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-12-14  8:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-13 10:12 [PATCH 1/3] FIX: Do not allow for multiple reshape_array() execution during reshape_container() call Adam Kwolek
2011-12-13 10:12 ` [PATCH 2/3] FIX: Add error message in container_reshape() Adam Kwolek
2011-12-13 10:12 ` [PATCH 3/3] imsm: FIX: return correct status from load_imsm_migr_rec() Adam Kwolek
2011-12-14  8:08 ` [PATCH 1/3] FIX: Do not allow for multiple reshape_array() execution during reshape_container() call NeilBrown
2011-12-14  8:19   ` Kwolek, Adam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox