mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
cache: add more validation
This commit is contained in:
parent
f0c18fceb4
commit
533ac4d47d
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.128 -
|
Version 2.02.128 -
|
||||||
===================================
|
===================================
|
||||||
|
Check for valid cache mode in validation of cache segment.
|
||||||
Enhance internal API cache_set_mode() and cache_set_policy().
|
Enhance internal API cache_set_mode() and cache_set_policy().
|
||||||
Enhance toollib's get_cache_params().
|
Enhance toollib's get_cache_params().
|
||||||
Runtime detect presence of cache smq policy.
|
Runtime detect presence of cache smq policy.
|
||||||
|
@ -100,6 +100,9 @@ static int _cache_pool_text_import(struct lv_segment *seg,
|
|||||||
* If the policy is not present, default policy is used.
|
* If the policy is not present, default policy is used.
|
||||||
*/
|
*/
|
||||||
if ((sn = dm_config_find_node(sn, "policy_settings"))) {
|
if ((sn = dm_config_find_node(sn, "policy_settings"))) {
|
||||||
|
if (!seg->policy_name)
|
||||||
|
return SEG_LOG_ERROR("policy_settings must have a policy_name in");
|
||||||
|
|
||||||
if (sn->v)
|
if (sn->v)
|
||||||
return SEG_LOG_ERROR("policy_settings must be a section in");
|
return SEG_LOG_ERROR("policy_settings must be a section in");
|
||||||
|
|
||||||
|
@ -7074,7 +7074,11 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
|
|||||||
display_lvname(origin_lv));
|
display_lvname(origin_lv));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
} else if (pool_lv && seg_is_cache(lp)) {
|
} else if (seg_is_cache(lp)) {
|
||||||
|
if (!pool_lv) {
|
||||||
|
log_error(INTERNAL_ERROR "Pool LV for cache is missing.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (!lv_is_cache_pool(pool_lv)) {
|
if (!lv_is_cache_pool(pool_lv)) {
|
||||||
log_error("Logical volume %s is not a cache pool.",
|
log_error("Logical volume %s is not a cache pool.",
|
||||||
display_lvname(pool_lv));
|
display_lvname(pool_lv));
|
||||||
|
@ -208,7 +208,21 @@ int check_lv_segments(struct logical_volume *lv, int complete_vg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (seg_is_cache_pool(seg)) {
|
if (seg_is_cache_pool(seg) &&
|
||||||
|
!dm_list_empty(&seg->lv->segs_using_this_lv)) {
|
||||||
|
switch (seg->feature_flags &
|
||||||
|
(DM_CACHE_FEATURE_PASSTHROUGH |
|
||||||
|
DM_CACHE_FEATURE_WRITETHROUGH |
|
||||||
|
DM_CACHE_FEATURE_WRITEBACK)) {
|
||||||
|
case DM_CACHE_FEATURE_PASSTHROUGH:
|
||||||
|
case DM_CACHE_FEATURE_WRITETHROUGH:
|
||||||
|
case DM_CACHE_FEATURE_WRITEBACK:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
log_error("LV %s has invalid cache's feature flag.",
|
||||||
|
lv->name);
|
||||||
|
inc_error_count;
|
||||||
|
}
|
||||||
if (!seg->policy_name) {
|
if (!seg->policy_name) {
|
||||||
log_error("LV %s is missing cache policy name.", lv->name);
|
log_error("LV %s is missing cache policy name.", lv->name);
|
||||||
inc_error_count;
|
inc_error_count;
|
||||||
|
Loading…
Reference in New Issue
Block a user