From 6ab3b611c7f5098f4ed912f770afe1e242566a58 Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Fri, 19 Aug 2011 16:26:02 +0000 Subject: [PATCH] restrict dm_tree_node_add_null_area --- WHATS_NEW_DM | 1 + libdm/libdevmapper.h | 4 ++++ libdm/libdm-deptree.c | 16 ++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM index a07ab66c0..beaa38d1a 100644 --- a/WHATS_NEW_DM +++ b/WHATS_NEW_DM @@ -1,5 +1,6 @@ Version 1.02.67 - ================================== + Add dm_tree_node_add_null_area for temporarily-missing raid devs tracked. Version 1.02.66 - 12th August 2011 ================================== diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h index 3c49f7c1d..ea75376b3 100644 --- a/libdm/libdevmapper.h +++ b/libdm/libdevmapper.h @@ -516,6 +516,10 @@ int dm_tree_node_add_target_area(struct dm_tree_node *node, const char *dev_name, const char *dlid, uint64_t offset); + +/* + * Only for temporarily-missing raid devices where changes are tracked. + */ int dm_tree_node_add_null_area(struct dm_tree_node *node, uint64_t offset); /* diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c index 0ee78676c..66508b3d9 100644 --- a/libdm/libdm-deptree.c +++ b/libdm/libdm-deptree.c @@ -2629,6 +2629,22 @@ int dm_tree_node_add_null_area(struct dm_tree_node *node, uint64_t offset) seg = dm_list_item(dm_list_last(&node->props.segs), struct load_segment); + switch (seg->type) { + case SEG_RAID1: + case SEG_RAID4: + case SEG_RAID5_LA: + case SEG_RAID5_RA: + case SEG_RAID5_LS: + case SEG_RAID5_RS: + case SEG_RAID6_ZR: + case SEG_RAID6_NR: + case SEG_RAID6_NC: + break; + default: + log_error("dm_tree_node_add_null_area() called on an unsupported segment type"); + return 0; + } + if (!_add_area(node, seg, NULL, offset)) return_0; -- 2.43.5