[lvm-devel] dev-lvmguy-raid-takeover-reshape-resize - start adding transitions to _adjust_final_segtype()
Heinz Mauelshagen
mauelsha at fedoraproject.org
Sat Jan 31 14:10:43 UTC 2015
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=645f4fad66ce5d649776a1ec98171616b5bec40e
Commit: 645f4fad66ce5d649776a1ec98171616b5bec40e
Parent: 9bded3b386833360dff3a5bd9bba4de4297f1914
Author: Heinz Mauelshagen <heinzm at redhat.com>
AuthorDate: Sat Jan 31 15:09:12 2015 +0100
Committer: Heinz Mauelshagen <heinzm at redhat.com>
CommitterDate: Sat Jan 31 15:09:12 2015 +0100
start adding transitions to _adjust_final_segtype()
---
lib/metadata/raid_manip.c | 43 +++++++++++++++++++++++++++++++++++++++++--
tools/lvconvert.c | 4 +++-
2 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 4781d97..79997d9 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -2507,18 +2507,57 @@ static const struct segment_type *_adjust_final_segtype(struct logical_volume *l
{
unsigned cn, pn;
struct possible_takeover pt[] = {
+ { .current_name = SEG_TYPE_NAME_STRIPED,
+ .possible_names = { SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_RAID5_N, SEG_TYPE_NAME_RAID6_N_6, NULL } },
{ .current_name = SEG_TYPE_NAME_RAID0,
.possible_names = { SEG_TYPE_NAME_RAID5_N, SEG_TYPE_NAME_RAID6_N_6, NULL } },
{ .current_name = SEG_TYPE_NAME_RAID1,
.possible_names = { SEG_TYPE_NAME_RAID5_N, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID4,
+ .possible_names = { SEG_TYPE_NAME_RAID5_0, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID4_N,
+ .possible_names = { SEG_TYPE_NAME_RAID5_N, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5,
+ .possible_names = { SEG_TYPE_NAME_RAID6_LS_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5_0,
+ .possible_names = { SEG_TYPE_NAME_RAID6_0_6, NULL } },
{ .current_name = SEG_TYPE_NAME_RAID5_N,
.possible_names = { SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_RAID1,
SEG_TYPE_NAME_STRIPED, SEG_TYPE_NAME_RAID6_N_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5_LS,
+ .possible_names = { SEG_TYPE_NAME_RAID6_LS_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5_LA,
+ .possible_names = { SEG_TYPE_NAME_RAID6_LA_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5_RS,
+ .possible_names = { SEG_TYPE_NAME_RAID6_RS_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID5_RA,
+ .possible_names = { SEG_TYPE_NAME_RAID6_RA_6, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_ZR,
+ .possible_names = { SEG_TYPE_NAME_RAID6_N_6, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_NC,
+ .possible_names = { SEG_TYPE_NAME_RAID6_N_6, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_NR,
+ .possible_names = { SEG_TYPE_NAME_RAID6_N_6, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
{ .current_name = SEG_TYPE_NAME_RAID6_N_6,
- .possible_names = { SEG_TYPE_NAME_RAID5_N, SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ .possible_names = { SEG_TYPE_NAME_RAID5_N, SEG_TYPE_NAME_RAID0,
+ SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_LS_6,
+ .possible_names = { SEG_TYPE_NAME_RAID5_LS, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_LA_6,
+ .possible_names = { SEG_TYPE_NAME_RAID5_LA, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_RS_6,
+ .possible_names = { SEG_TYPE_NAME_RAID5_RS, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
+ { .current_name = SEG_TYPE_NAME_RAID6_RA_6,
+ .possible_names = { SEG_TYPE_NAME_RAID5_RA, SEG_TYPE_NAME_RAID5_N,
+ SEG_TYPE_NAME_RAID0, SEG_TYPE_NAME_STRIPED, NULL } },
};
-
for (cn = 0; cn < ARRAY_SIZE(pt); cn++) {
if (!strcmp(segtype->name, pt[cn].current_name)) {
for (pn = 0; pt[cn].possible_names[pn]; pn++)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index c72b73e..c969341 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -16,6 +16,8 @@
#include "polldaemon.h"
#include "lv_alloc.h"
+#define printf(a ...)
+
struct lvconvert_params {
int cache;
int force;
@@ -1900,7 +1902,6 @@ static int _lvconvert_raid(struct logical_volume *lv, struct lvconvert_params *l
struct lv_segment *seg = first_seg(lv);
dm_percent_t sync_percent;
-#define printf(a ...)
printf("stripes_ARG=%u stripes_long_ARG=%u\n", arg_count(lv->vg->cmd, stripes_ARG), arg_count(lv->vg->cmd, stripes_long_ARG));
if (!arg_count(cmd, type_ARG))
lp->segtype = seg->segtype;
@@ -1935,6 +1936,7 @@ printf("stripes_ARG=%u stripes_long_ARG=%u\n", arg_count(lv->vg->cmd, stripes_AR
image_count -= lp->mirrors;
else
image_count = lp->mirrors + 1;
+printf("image_count=%u", image_count);
track = arg_count(cmd, trackchanges_ARG);
if (image_count < 1 || (track && lp->mirrors != 1)) {
More information about the lvm-devel
mailing list