diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2015-09-24 20:17:57 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2015-09-24 20:17:57 +0100 |
commit | 3036620b488800027d1ec37b5cbe65f6f180e9c7 (patch) | |
tree | ff14b384dc10a144373ad05eeeea4275b2a394b0 | |
parent | d40830a2b13595943ca51d4bfd6249527a0972cf (diff) | |
download | lvm2-3036620b488800027d1ec37b5cbe65f6f180e9c7.tar.gz |
raid: Add a segtype flag for each raid type.
-rw-r--r-- | lib/metadata/segtype.h | 22 | ||||
-rw-r--r-- | lib/raid/raid.c | 24 |
2 files changed, 33 insertions, 13 deletions
diff --git a/lib/metadata/segtype.h b/lib/metadata/segtype.h index fd833cde9..09034e983 100644 --- a/lib/metadata/segtype.h +++ b/lib/metadata/segtype.h @@ -46,6 +46,26 @@ struct dev_manager; #define SEG_MIRROR 0x0000000000008000ULL #define SEG_ONLY_EXCLUSIVE 0x0000000000010000ULL /* In cluster only exlusive activation */ #define SEG_CAN_ERROR_WHEN_FULL 0x0000000000020000ULL + +#define SEG_RAID1 0x0000000000100000ULL +#define SEG_RAID10 0x0000000000200000ULL +#define SEG_RAID4 0x0000000000400000ULL +#define SEG_RAID5_N 0x0000000000800000ULL +#define SEG_RAID5_LA 0x0000000001000000ULL +#define SEG_RAID5_LS 0x0000000002000000ULL +#define SEG_RAID5_RA 0x0000000004000000ULL +#define SEG_RAID5_RS 0x0000000008000000ULL +#define SEG_RAID5 SEG_RAID5_LS +#define SEG_RAID6_NC 0x0000000010000000ULL +#define SEG_RAID6_NR 0x0000000020000000ULL +#define SEG_RAID6_ZR 0x0000000040000000ULL +#define SEG_RAID6_LA_6 0x0000000080000000ULL +#define SEG_RAID6_LS_6 0x0000000100000000ULL +#define SEG_RAID6_RA_6 0x0000000200000000ULL +#define SEG_RAID6_RS_6 0x0000000400000000ULL +#define SEG_RAID6_N_6 0x0000000800000000ULL +#define SEG_RAID6 SEG_RAID6_ZR + #define SEG_UNKNOWN 0x8000000000000000ULL #define SEG_TYPE_NAME_LINEAR "linear" @@ -141,7 +161,7 @@ struct segment_type { struct dm_list list; /* Internal */ uint64_t flags; - uint32_t parity_devs; /* Parity drives required by segtype */ + uint32_t parity_devs; /* Parity drives required by segtype */ struct segtype_handler *ops; const char *name; diff --git a/lib/raid/raid.c b/lib/raid/raid.c index df22b541c..8c6bb7297 100644 --- a/lib/raid/raid.c +++ b/lib/raid/raid.c @@ -437,18 +437,18 @@ static const struct raid_type { unsigned parity; uint64_t extra_flags; } _raid_types[] = { - { SEG_TYPE_NAME_RAID1, 0, SEG_AREAS_MIRRORED }, - { SEG_TYPE_NAME_RAID10, 0, SEG_AREAS_MIRRORED }, - { SEG_TYPE_NAME_RAID4, 1 }, - { SEG_TYPE_NAME_RAID5, 1 }, - { SEG_TYPE_NAME_RAID5_LA, 1 }, - { SEG_TYPE_NAME_RAID5_LS, 1 }, - { SEG_TYPE_NAME_RAID5_RA, 1 }, - { SEG_TYPE_NAME_RAID5_RS, 1 }, - { SEG_TYPE_NAME_RAID6, 2 }, - { SEG_TYPE_NAME_RAID6_NC, 2 }, - { SEG_TYPE_NAME_RAID6_NR, 2 }, - { SEG_TYPE_NAME_RAID6_ZR, 2 } + { SEG_TYPE_NAME_RAID1, 0, SEG_RAID1 | SEG_AREAS_MIRRORED }, + { SEG_TYPE_NAME_RAID10, 0, SEG_RAID10 | SEG_AREAS_MIRRORED }, + { SEG_TYPE_NAME_RAID4, 1, SEG_RAID4 }, + { SEG_TYPE_NAME_RAID5, 1, SEG_RAID5 }, + { SEG_TYPE_NAME_RAID5_LA, 1, SEG_RAID5_LA }, + { SEG_TYPE_NAME_RAID5_LS, 1, SEG_RAID5_LS }, + { SEG_TYPE_NAME_RAID5_RA, 1, SEG_RAID5_RA }, + { SEG_TYPE_NAME_RAID5_RS, 1, SEG_RAID5_RS }, + { SEG_TYPE_NAME_RAID6, 2, SEG_RAID6 }, + { SEG_TYPE_NAME_RAID6_NC, 2, SEG_RAID6_NC }, + { SEG_TYPE_NAME_RAID6_NR, 2, SEG_RAID6_NR }, + { SEG_TYPE_NAME_RAID6_ZR, 2, SEG_RAID6_ZR } }; static struct segment_type *_init_raid_segtype(struct cmd_context *cmd, |