mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
activation: avoid rechecking pvmove node
Use new 3rd. state of trace_pvmove_deps == 2. In this state we know, we have already seen the node and can skip futher testing. Remainging value 1 signals we want to track, and value 0 is for ignoring tracking, but node is still checking in this case. Reduces large amount of duplicate ioctl queries.
This commit is contained in:
parent
e4db42e476
commit
7e794b7748
@ -2059,6 +2059,9 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
|
|||||||
const char *uuid;
|
const char *uuid;
|
||||||
const struct logical_volume *plv;
|
const struct logical_volume *plv;
|
||||||
|
|
||||||
|
if (lv_is_pvmove(lv) && (dm->track_pvmove_deps == 2))
|
||||||
|
return 1; /* Avoid rechecking of already seen pvmove LV */
|
||||||
|
|
||||||
if (lv_is_cache_pool(lv)) {
|
if (lv_is_cache_pool(lv)) {
|
||||||
if (!dm_list_empty(&lv->segs_using_this_lv)) {
|
if (!dm_list_empty(&lv->segs_using_this_lv)) {
|
||||||
if (!_add_lv_to_dtree(dm, dtree, seg_lv(first_seg(lv), 0), 0))
|
if (!_add_lv_to_dtree(dm, dtree, seg_lv(first_seg(lv), 0), 0))
|
||||||
@ -2178,8 +2181,8 @@ static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
|
|||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
/* Add any LVs referencing a PVMOVE LV unless told not to. */
|
/* Add any LVs referencing a PVMOVE LV unless told not to. */
|
||||||
if (dm->track_pvmove_deps && lv_is_pvmove(lv)) {
|
if ((dm->track_pvmove_deps == 1) && lv_is_pvmove(lv)) {
|
||||||
dm->track_pvmove_deps = 0;
|
dm->track_pvmove_deps = 2; /* Mark as already seen */
|
||||||
dm_list_iterate_items(sl, &lv->segs_using_this_lv) {
|
dm_list_iterate_items(sl, &lv->segs_using_this_lv) {
|
||||||
/* If LV is snapshot COW - whole snapshot needs reload */
|
/* If LV is snapshot COW - whole snapshot needs reload */
|
||||||
plv = lv_is_cow(sl->seg->lv) ? origin_from_cow(sl->seg->lv) : sl->seg->lv;
|
plv = lv_is_cow(sl->seg->lv) ? origin_from_cow(sl->seg->lv) : sl->seg->lv;
|
||||||
|
Loading…
Reference in New Issue
Block a user