diff options
Diffstat (limited to 'lib/metadata/segtype.h')
-rw-r--r-- | lib/metadata/segtype.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/metadata/segtype.h b/lib/metadata/segtype.h index a914aac6..3ea61b95 100644 --- a/lib/metadata/segtype.h +++ b/lib/metadata/segtype.h @@ -38,6 +38,7 @@ struct dev_manager; #define SEG_MONITORED 0x00000080U #define SEG_REPLICATOR 0x00000100U #define SEG_REPLICATOR_DEV 0x00000200U +#define SEG_RAID 0x00000400U #define SEG_UNKNOWN 0x80000000U #define seg_is_mirrored(seg) ((seg)->segtype->flags & SEG_AREAS_MIRRORED ? 1 : 0) @@ -46,6 +47,7 @@ struct dev_manager; #define seg_is_striped(seg) ((seg)->segtype->flags & SEG_AREAS_STRIPED ? 1 : 0) #define seg_is_snapshot(seg) ((seg)->segtype->flags & SEG_SNAPSHOT ? 1 : 0) #define seg_is_virtual(seg) ((seg)->segtype->flags & SEG_VIRTUAL ? 1 : 0) +#define seg_is_raid(seg) ((seg)->segtype->flags & SEG_RAID ? 1 : 0) #define seg_can_split(seg) ((seg)->segtype->flags & SEG_CAN_SPLIT ? 1 : 0) #define seg_cannot_be_zeroed(seg) ((seg)->segtype->flags & SEG_CANNOT_BE_ZEROED ? 1 : 0) #define seg_monitored(seg) ((seg)->segtype->flags & SEG_MONITORED ? 1 : 0) @@ -53,14 +55,19 @@ struct dev_manager; #define segtype_is_striped(segtype) ((segtype)->flags & SEG_AREAS_STRIPED ? 1 : 0) #define segtype_is_mirrored(segtype) ((segtype)->flags & SEG_AREAS_MIRRORED ? 1 : 0) +#define segtype_is_raid(segtype) ((segtype)->flags & SEG_RAID ? 1 : 0) #define segtype_is_virtual(segtype) ((segtype)->flags & SEG_VIRTUAL ? 1 : 0) struct segment_type { struct dm_list list; /* Internal */ struct cmd_context *cmd; /* lvm_register_segtype() sets this. */ + uint32_t flags; + uint32_t parity_devs; /* Parity drives required by segtype */ + struct segtype_handler *ops; const char *name; + void *library; /* lvm_register_segtype() sets this. */ void *private; /* For the segtype handler to use. */ }; @@ -117,7 +124,21 @@ struct segment_type *init_striped_segtype(struct cmd_context *cmd); struct segment_type *init_zero_segtype(struct cmd_context *cmd); struct segment_type *init_error_segtype(struct cmd_context *cmd); struct segment_type *init_free_segtype(struct cmd_context *cmd); -struct segment_type *init_unknown_segtype(struct cmd_context *cmd, const char *name); +struct segment_type *init_unknown_segtype(struct cmd_context *cmd, + const char *name); +#ifdef RAID_INTERNAL +struct segment_type *init_raid1_segtype(struct cmd_context *cmd); +struct segment_type *init_raid4_segtype(struct cmd_context *cmd); +struct segment_type *init_raid5_segtype(struct cmd_context *cmd); +struct segment_type *init_raid5_la_segtype(struct cmd_context *cmd); +struct segment_type *init_raid5_ra_segtype(struct cmd_context *cmd); +struct segment_type *init_raid5_ls_segtype(struct cmd_context *cmd); +struct segment_type *init_raid5_rs_segtype(struct cmd_context *cmd); +struct segment_type *init_raid6_segtype(struct cmd_context *cmd); +struct segment_type *init_raid6_zr_segtype(struct cmd_context *cmd); +struct segment_type *init_raid6_nr_segtype(struct cmd_context *cmd); +struct segment_type *init_raid6_nc_segtype(struct cmd_context *cmd); +#endif #ifdef REPLICATOR_INTERNAL int init_replicator_segtype(struct segtype_library *seglib); |