From b53477997dedea4eb3f31263cce4afa3b16d36fb Mon Sep 17 00:00:00 2001 From: Adam Kwolek Date: Mon, 14 Feb 2011 09:23:36 +1100 Subject: imsm: Use single migration type for all migrations Use single enum definition/migration type for all migrations. Using separate definitions causes limitation for number of changes in metadata implementation during single update for migration/reshape. Single CH_MIGRATION enum allows for many mtadata parameters change in single update. It will be possible to change i.e. chunk size together with raid level. In current implementation 2 metadata updates would be required for such action, one using CH_CHUNK_MIGR and second using CH_LEVEL_MIGRATION migration type. Signed-off-by: Adam Kwolek Signed-off-by: NeilBrown --- super-intel.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'super-intel.c') diff --git a/super-intel.c b/super-intel.c index 2875adea..f2efc6fd 100644 --- a/super-intel.c +++ b/super-intel.c @@ -294,8 +294,7 @@ struct extent { /* definitions of reshape process types */ enum imsm_reshape_type { CH_TAKEOVER, - CH_CHUNK_MIGR, - CH_LEVEL_MIGRATION + CH_MIGRATION, }; /* definition of messages passed to imsm_process_update */ @@ -6919,7 +6918,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, switch (info.array.level) { case 0: if (geo->level == 5) { - change = CH_LEVEL_MIGRATION; + change = CH_MIGRATION; check_devs = 1; } if (geo->level == 10) { @@ -6935,7 +6934,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, break; case 5: if (geo->level == 0) - change = CH_LEVEL_MIGRATION; + change = CH_MIGRATION; break; case 10: if (geo->level == 0) { @@ -6956,7 +6955,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, if ((geo->layout != info.array.layout) && ((geo->layout != UnSet) && (geo->layout != -1))) { - change = CH_LEVEL_MIGRATION; + change = CH_MIGRATION; if ((info.array.layout == 0) && (info.array.level == 5) && (geo->layout == 5)) { @@ -6980,7 +6979,7 @@ enum imsm_reshape_type imsm_analyze_change(struct supertype *st, if ((geo->chunksize > 0) && (geo->chunksize != UnSet) && (geo->chunksize != info.array.chunk_size)) - change = CH_CHUNK_MIGR; + change = CH_MIGRATION; else geo->chunksize = info.array.chunk_size; @@ -7128,10 +7127,7 @@ static int imsm_reshape_super(struct supertype *st, long long size, int level, case CH_TAKEOVER: ret_val = imsm_takeover(st, &geo); break; - case CH_CHUNK_MIGR: - ret_val = 0; - break; - case CH_LEVEL_MIGRATION: + case CH_MIGRATION: ret_val = 0; break; default: -- cgit v1.2.3