diff --git a/WHATS_NEW b/WHATS_NEW index 666c51ed6..1424fab29 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.116 - ==================================== + Fix tree preload to handle splitting raid images. Do not support unpartitioned DASD devices. Improve config validation to check if setting with string value can be empty. diff --git a/lib/activate/activate.c b/lib/activate/activate.c index 424786c9f..151e7143f 100644 --- a/lib/activate/activate.c +++ b/lib/activate/activate.c @@ -1760,6 +1760,22 @@ static int _preload_detached_lv(struct logical_volume *lv, void *data) struct detached_lv_data *detached = data; struct lv_list *lvl_pre; + /* Check and preload removed raid image leg */ + if (lv_is_raid_image(lv)) { + if ((lvl_pre = find_lv_in_vg_by_lvid(detached->lv_pre->vg, &lv->lvid)) && + !lv_is_raid_image(lvl_pre->lv) && + !_lv_preload(lvl_pre->lv, detached->laopts, detached->flush_required)) + return_0; + } + + /* Check and preload removed of raid metadata */ + if (lv_is_raid_metadata(lv)) { + if ((lvl_pre = find_lv_in_vg_by_lvid(detached->lv_pre->vg, &lv->lvid)) && + !lv_is_raid_metadata(lvl_pre->lv) && + !_lv_preload(lvl_pre->lv, detached->laopts, detached->flush_required)) + return_0; + } + if ((lvl_pre = find_lv_in_vg(detached->lv_pre->vg, lv->name))) { if (lv_is_visible(lvl_pre->lv) && lv_is_active(lv) && (!lv_is_cow(lv) || !lv_is_cow(lvl_pre->lv)) &&