From 2f754b73ffdaa95af4a6d703e31b76d4efbf7a36 Mon Sep 17 00:00:00 2001 From: Heinz Mauelshagen Date: Mon, 9 Oct 2017 14:00:46 +0200 Subject: [PATCH] raid: fix validation checks for segment data_offset member Commit 222e1e3acee399b0acf31565f784716d67c465a8 was not valuing special case of data_ofset member equal to 1. --- lib/metadata/merge.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c index b0adc5a11..5017cf191 100644 --- a/lib/metadata/merge.c +++ b/lib/metadata/merge.c @@ -143,7 +143,7 @@ static void _check_raid1_seg(struct lv_segment *seg, int *error_count) raid_seg_error("no meta areas"); if (seg->stripe_size) raid_seg_error_val("non-zero stripe size", seg->stripe_size); - if ((seg->lv->status & LV_RESHAPE_DATA_OFFSET) || seg->data_offset) + if ((seg->lv->status & LV_RESHAPE_DATA_OFFSET) || seg->data_offset > 1) raid_seg_error_val("data_offset", seg->data_offset); _check_raid_region_recovery(seg, error_count); } @@ -170,7 +170,7 @@ static void _check_raid45610_seg(struct lv_segment *seg, int *error_count) /* END: checks applying to any raid4/5/6/10 */ if (seg->lv->status & LV_RESHAPE_DATA_OFFSET) { - if (seg->data_offset & (seg->lv->vg->extent_size - 1)) + if (seg->data_offset > 1 && (seg->data_offset & (seg->lv->vg->extent_size - 1))) raid_seg_error_val("data_offset", seg->data_offset); } else if (seg->data_offset) raid_seg_error_val("data_offset", seg->data_offset); -- 2.43.5