Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
List overview
Download
lvm2-commits
November 2017
----- 2025 -----
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
lvm2-commits@lists.fedorahosted.org
8 participants
97 discussions
Start a n
N
ew thread
master - raid: correct raid6_n_6 -> raid5 convenience type
by Alasdair Kergon
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ebd0fed0ceb982503ac47…
Commit: ebd0fed0ceb982503ac474c2e6579a45a983e305 Parent: 00acae12a4295075f1b93786f60327e5d3c26e70 Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Mon Nov 13 18:03:50 2017 +0100 Committer: Alasdair G Kergon <agk(a)redhat.com> CommitterDate: Tue Nov 14 14:41:06 2017 +0000 raid: correct raid6_n_6 -> raid5 convenience type Fix "lvconvert --type raid5 RaidLV" on a "raid6_n_6" LV offering false "raid6_ls_6" instead of "raid5_n". --- lib/metadata/raid_manip.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c index a904666..2d8aaed 100644 --- a/lib/metadata/raid_manip.c +++ b/lib/metadata/raid_manip.c @@ -6141,9 +6141,12 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr seg_flag = SEG_RAID6_N_6; } else if (segtype_is_any_raid5(*segtype)) - /* No result for raid6_{zr,nr,nc} */ - if (!(seg_flag = _raid_seg_flag_6_to_5(seg_from)) || - !(seg_flag & (*segtype)->flags)) + if (!(seg_flag = _raid_seg_flag_6_to_5(seg_from))) + /* + * No result for raid6_{zr,nr,nc}. + * + * Offer to convert to corresponding raid6_*_6 type first. + */ seg_flag = _raid_segtype_flag_5_to_6(*segtype); /* -> raid1 */
1
0
0
0
master - test: additional avoid have_raid overhead
by Heinz Mauelshagen
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=b147ce00686beea3a55b7…
Commit: b147ce00686beea3a55b74e1a5eeb2d194259a49 Parent: 80f5fb7ebb677f875df172451def5544c17c3c8d Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Tue Nov 14 14:17:54 2017 +0100 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue Nov 14 14:17:54 2017 +0100 test: additional avoid have_raid overhead --- test/shell/lvcreate-large-raid.sh | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/shell/lvcreate-large-raid.sh b/test/shell/lvcreate-large-raid.sh index 1082731..3488db4 100644 --- a/test/shell/lvcreate-large-raid.sh +++ b/test/shell/lvcreate-large-raid.sh @@ -21,6 +21,8 @@ SKIP_WITH_LVMPOLLD=1 aux can_use_16T || skip aux have_raid 1 3 0 || skip +v1_9_0=0 +aux have_raid 1 9 0 && v1_9_0=1 segtypes="raid5" aux have_raid4 && segtypes="raid4 raid5" @@ -78,7 +80,7 @@ lvremove -ff $vg1 # Check --nosync is rejected for raid6 -if aux have_raid 1 9 0 ; then +if [ $v1_9_0 -eq 1 ] ; then not lvcreate --type raid6 -i 3 -L 750T -n $lv1 $vg1 --nosync fi @@ -103,7 +105,7 @@ lvremove -ff $vg1 lvcreate -aey -L 200T -n $lv1 $vg1 lvconvert -y --type raid1 -m 1 $vg1/$lv1 check lv_field $vg1/$lv1 size "200.00t" -if aux have_raid 1 9 0; then +if [ $v1_9_0 -eq 1 ] ; then # The 1.9.0 version of dm-raid is capable of performing # linear -> RAID1 upconverts as "recover" not "resync" # The LVM code now checks the dm-raid version when
1
0
0
0
master - test: avoid have_raid overhead
by Heinz Mauelshagen
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=80f5fb7ebb677f875df17…
Commit: 80f5fb7ebb677f875df172451def5544c17c3c8d Parent: bda0790949dccdd68b304437afa6a83bddc3ffca Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Tue Nov 14 14:15:09 2017 +0100 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue Nov 14 14:15:09 2017 +0100 test: avoid have_raid overhead --- test/shell/lvchange-rebuild-raid.sh | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) diff --git a/test/shell/lvchange-rebuild-raid.sh b/test/shell/lvchange-rebuild-raid.sh index 4f535e6..5579106 100644 --- a/test/shell/lvchange-rebuild-raid.sh +++ b/test/shell/lvchange-rebuild-raid.sh @@ -16,6 +16,8 @@ SKIP_WITH_LVMPOLLD=1 . lib/inittest aux have_raid 1 3 2 || skip +v1_9_0=0 +aux have_raid 1 9 && v1_9_0=1 aux prepare_vg 8 get_devs @@ -47,17 +49,17 @@ _sync # Rebuild 1st and 2nd device would rebuild a # whole mirror group and needs to be rejected. not lvchange --yes --rebuild "$dev1" --rebuild "$dev2" $vg/$lv1 -not check raid_leg_status $vg $lv1 "aAaAAAAA" +not check raid_leg_status $vg $lv1 "aaAAAAA" _sync "AAAAAAAA" # Rebuild 1st and 3rd device from different mirror groups is fine. lvchange --yes --rebuild "$dev1" --rebuild "$dev3" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "aAaAAAAA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "aAaAAAAA" _sync "AAAAAAAA" # Rebuild devices 1, 3, 6 from different mirror groups is fine. lvchange --yes --rebuild "$dev1" --rebuild "$dev3" --rebuild "$dev6" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "aAaAAaAA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "aAaAAaAA" _sync "AAAAAAAA" # Rebuild devices 1, 3, 5 and 6 with 5+6 being @@ -68,12 +70,12 @@ _sync "AAAAAAAA" # Rebuild devices 1, 3, 5 and 7 from different mirror groups is fine. lvchange --yes --rebuild "$dev1" --rebuild "$dev3" --rebuild "$dev5" --rebuild "$dev7" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "aAaAaAaA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "aAaAaAaA" _sync # Rebuild devices 2, 4, 6 and 8 from different mirror groups is fine. lvchange --yes --rebuild "$dev2" --rebuild "$dev4" --rebuild "$dev6" --rebuild "$dev8" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "AaAaAaAa" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "AaAaAaAa" _sync "AAAAAAAA" ############################################## @@ -91,17 +93,17 @@ _sync "AAAAAAAA" # Rebuilding all but the raid1 master leg is fine. lvchange --yes --rebuild "$dev2" --rebuild "$dev3" --rebuild "$dev4" \ --rebuild "$dev5" --rebuild "$dev6" --rebuild "$dev7" --rebuild "$dev8" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "Aaaaaaaa" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "Aaaaaaaa" _sync "AAAAAAAA" # Rebuilding the raid1 master leg is fine. lvchange --yes --rebuild "$dev1" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "aAAAAAAA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "aAAAAAAA" _sync "AAAAAAAA" # Rebuild legs on devices 2, 4, 6 and 8 is fine. lvchange --yes --rebuild "$dev2" --rebuild "$dev4" --rebuild "$dev6" --rebuild "$dev8" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "AaAaAaAa" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "AaAaAaAa" _sync "AAAAAAAA" ############################################## @@ -123,20 +125,20 @@ _sync "AAAAAA" # Rebuilding any 1 raid6 stripe is fine. lvchange --yes --rebuild "$dev2" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "AaAAAA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "AaAAAA" _sync lvchange --yes --rebuild "$dev5" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "AAAAaA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "AAAAaA" _sync "AAAAAA" # Rebuilding any 2 raid6 stripes is fine. lvchange --yes --rebuild "$dev2" --rebuild "$dev4" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "AaAaAA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "AaAaAA" _sync "AAAAAA" lvchange --yes --rebuild "$dev1" --rebuild "$dev5" $vg/$lv1 -aux have_raid 1 9 && check raid_leg_status $vg $lv1 "aAAAaA" +[ $v1_9_0 -eq 1 ] && check raid_leg_status $vg $lv1 "aAAAaA" _sync "AAAAAA" vgremove -ff $vg
1
0
0
0
master - raid: correct raid6_n_6 -> raid5 convenience type
by Heinz Mauelshagen
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bda0790949dccdd68b304…
Commit: bda0790949dccdd68b304437afa6a83bddc3ffca Parent: 762606a8c4070db7b3719c492bd9319d36ec271d Author: Heinz Mauelshagen <heinzm(a)redhat.com> AuthorDate: Mon Nov 13 18:03:50 2017 +0100 Committer: Heinz Mauelshagen <heinzm(a)redhat.com> CommitterDate: Tue Nov 14 14:08:20 2017 +0100 raid: correct raid6_n_6 -> raid5 convenience type Fix "lvconvert --type raid5 RaidLV" on a "raid6_n_6" LV offering false "raid6_ls_6" instead of "raid5_n". --- lib/metadata/raid_manip.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c index a904666..2d8aaed 100644 --- a/lib/metadata/raid_manip.c +++ b/lib/metadata/raid_manip.c @@ -6141,9 +6141,12 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr seg_flag = SEG_RAID6_N_6; } else if (segtype_is_any_raid5(*segtype)) - /* No result for raid6_{zr,nr,nc} */ - if (!(seg_flag = _raid_seg_flag_6_to_5(seg_from)) || - !(seg_flag & (*segtype)->flags)) + if (!(seg_flag = _raid_seg_flag_6_to_5(seg_from))) + /* + * No result for raid6_{zr,nr,nc}. + * + * Offer to convert to corresponding raid6_*_6 type first. + */ seg_flag = _raid_segtype_flag_5_to_6(*segtype); /* -> raid1 */
1
0
0
0
master - metadata: Eliminate redundant nested VG metadata
by Alasdair Kergon
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=762606a8c4070db7b3719…
Commit: 762606a8c4070db7b3719c492bd9319d36ec271d Parent: 00acae12a4295075f1b93786f60327e5d3c26e70 Author: Alasdair G Kergon <agk(a)redhat.com> AuthorDate: Tue Nov 14 01:57:14 2017 +0000 Committer: Alasdair G Kergon <agk(a)redhat.com> CommitterDate: Tue Nov 14 01:57:14 2017 +0000 metadata: Eliminate redundant nested VG metadata Only lv_committed() now uses vg->vg_committed and it appears redundant if its contents match the enclosing VG so don't waste cycles creating it when that's known to be true. --- WHATS_NEW | 1 + lib/metadata/metadata.c | 44 ++++++++++++++++++-------------------------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 1c8838c..04229da 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.177 - ==================================== + Eliminate redundant nested VG metadata in VG struct. Avoid importing persistent filter in vgscan/pvscan/vgrename. Fix memleak of string buffer when vgcfgbackup runs in secure mode. Do not print error when clvmd cannot find running clvmd. diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 56c11e6..9c4c24d 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -897,6 +897,19 @@ int vgcreate_params_validate(struct cmd_context *cmd, return 1; } +static void _vg_wipe_cached_precommitted(struct volume_group *vg) +{ + release_vg(vg->vg_precommitted); + vg->vg_precommitted = NULL; +} + +static void _vg_move_cached_precommitted_to_committed(struct volume_group *vg) +{ + release_vg(vg->vg_committed); + vg->vg_committed = vg->vg_precommitted; + vg->vg_precommitted = NULL; +} + /* * Update content of precommitted VG * @@ -907,8 +920,7 @@ static int _vg_update_vg_precommitted(struct volume_group *vg) { struct dm_config_tree *cft_precommitted; - release_vg(vg->vg_precommitted); - vg->vg_precommitted = NULL; + _vg_wipe_cached_precommitted(vg); /* Copy the VG using an export followed by import */ if (!(cft_precommitted = export_vg_to_config_tree(vg))) @@ -924,23 +936,6 @@ static int _vg_update_vg_precommitted(struct volume_group *vg) return 1; } -static int _vg_update_vg_committed(struct volume_group *vg) -{ - if (dm_pool_locked(vg->vgmem)) - return 1; - - if (vg->vg_committed || is_orphan_vg(vg->name)) /* we already have it */ - return 1; - - if (!_vg_update_vg_precommitted(vg)) - return_0; - - vg->vg_committed = vg->vg_precommitted; - vg->vg_precommitted = NULL; - - return 1; -} - /* * Create a (struct volume_group) volume group handle from a struct volume_group pointer and a * possible failure code or zero for success. @@ -961,8 +956,8 @@ static struct volume_group *_vg_make_handle(struct cmd_context *cmd, vg->read_status = failure; - if (vg->fid && !_vg_update_vg_committed(vg)) - vg->read_status |= FAILED_ALLOCATION; + if (vg->fid && !dm_pool_locked(vg->vgmem)) + _vg_wipe_cached_precommitted(vg); return vg; } @@ -3177,9 +3172,7 @@ int vg_commit(struct volume_group *vg) pvl->pv->status &= ~PV_MOVED_VG; /* This *is* the original now that it's commited. */ - release_vg(vg->vg_committed); - vg->vg_committed = vg->vg_precommitted; - vg->vg_precommitted = NULL; + _vg_move_cached_precommitted_to_committed(vg); } /* If update failed, remove any cached precommitted metadata. */ @@ -3212,8 +3205,7 @@ void vg_revert(struct volume_group *vg) } } - release_vg(vg->vg_precommitted); /* VG is no longer needed */ - vg->vg_precommitted = NULL; + _vg_wipe_cached_precommitted(vg); /* VG is no longer needed */ dm_list_iterate_items(mda, &vg->fid->metadata_areas_in_use) { if (mda->ops->vg_revert &&
1
0
0
0
master - metadata: Remove unused vg.cft_precommitted
by Alasdair Kergon
14 Nov '17
14 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=00acae12a4295075f1b93…
Commit: 00acae12a4295075f1b93786f60327e5d3c26e70 Parent: 6bf0f04ae2cb4e2c33a9836125a41e9e6b21e4d7 Author: Alasdair G Kergon <agk(a)redhat.com> AuthorDate: Tue Nov 14 01:09:58 2017 +0000 Committer: Alasdair G Kergon <agk(a)redhat.com> CommitterDate: Tue Nov 14 01:22:09 2017 +0000 metadata: Remove unused vg.cft_precommitted The precommitted metadata config_tree is now only referenced from a single function so just use a local variable instead. --- lib/metadata/metadata.c | 29 ++++++++--------------------- lib/metadata/vg.c | 2 -- lib/metadata/vg.h | 3 +-- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index d823ef2..56c11e6 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -905,23 +905,22 @@ int vgcreate_params_validate(struct cmd_context *cmd, */ static int _vg_update_vg_precommitted(struct volume_group *vg) { + struct dm_config_tree *cft_precommitted; + release_vg(vg->vg_precommitted); vg->vg_precommitted = NULL; - if (vg->cft_precommitted) { - dm_config_destroy(vg->cft_precommitted); - vg->cft_precommitted = NULL; - } - - if (!(vg->cft_precommitted = export_vg_to_config_tree(vg))) + /* Copy the VG using an export followed by import */ + if (!(cft_precommitted = export_vg_to_config_tree(vg))) return_0; - if (!(vg->vg_precommitted = import_vg_from_config_tree(vg->cft_precommitted, vg->fid))) { - dm_config_destroy(vg->cft_precommitted); - vg->cft_precommitted = NULL; + if (!(vg->vg_precommitted = import_vg_from_config_tree(cft_precommitted, vg->fid))) { + dm_config_destroy(cft_precommitted); return_0; } + dm_config_destroy(cft_precommitted); + return 1; } @@ -938,10 +937,6 @@ static int _vg_update_vg_committed(struct volume_group *vg) vg->vg_committed = vg->vg_precommitted; vg->vg_precommitted = NULL; - if (vg->cft_precommitted) { - dm_config_destroy(vg->cft_precommitted); - vg->cft_precommitted = NULL; - } return 1; } @@ -3185,10 +3180,6 @@ int vg_commit(struct volume_group *vg) release_vg(vg->vg_committed); vg->vg_committed = vg->vg_precommitted; vg->vg_precommitted = NULL; - if (vg->cft_precommitted) { - dm_config_destroy(vg->cft_precommitted); - vg->cft_precommitted = NULL; - } } /* If update failed, remove any cached precommitted metadata. */ @@ -3223,10 +3214,6 @@ void vg_revert(struct volume_group *vg) release_vg(vg->vg_precommitted); /* VG is no longer needed */ vg->vg_precommitted = NULL; - if (vg->cft_precommitted) { - dm_config_destroy(vg->cft_precommitted); - vg->cft_precommitted = NULL; - } dm_list_iterate_items(mda, &vg->fid->metadata_areas_in_use) { if (mda->ops->vg_revert && diff --git a/lib/metadata/vg.c b/lib/metadata/vg.c index f90ac82..4c808da 100644 --- a/lib/metadata/vg.c +++ b/lib/metadata/vg.c @@ -104,8 +104,6 @@ void release_vg(struct volume_group *vg) release_vg(vg->vg_committed); release_vg(vg->vg_precommitted); - if (vg->cft_precommitted) - dm_config_destroy(vg->cft_precommitted); _free_vg(vg); } diff --git a/lib/metadata/vg.h b/lib/metadata/vg.h index bc2c2dd..086a42c 100644 --- a/lib/metadata/vg.h +++ b/lib/metadata/vg.h @@ -59,8 +59,7 @@ struct volume_group { * _vg_update_vg_committed. */ struct volume_group *vg_committed; - struct dm_config_tree *cft_precommitted; /* Precommitted metadata */ - struct volume_group *vg_precommitted; /* Parsed from cft */ + struct volume_group *vg_precommitted; alloc_policy_t alloc; struct profile *profile;
1
0
0
0
master - log: Improve various device-related messages
by Alasdair Kergon
13 Nov '17
13 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=6bf0f04ae2cb4e2c33a98…
Commit: 6bf0f04ae2cb4e2c33a9836125a41e9e6b21e4d7 Parent: 598fcccf458010dac5d9e319db943629e15d5b16 Author: Alasdair G Kergon <agk(a)redhat.com> AuthorDate: Mon Nov 13 14:43:32 2017 +0000 Committer: Alasdair G Kergon <agk(a)redhat.com> CommitterDate: Mon Nov 13 19:45:33 2017 +0000 log: Improve various device-related messages - Use 'lvmcache' consistently instead of 'metadata cache' - Always use 5 characters for source line number - Remember to convert uuids into printable form - Use <no name> rather than (null) when VG has no name. --- lib/cache/lvmcache.c | 10 +++++----- lib/device/dev-cache.c | 6 +++--- lib/device/dev-ext.c | 14 ++++++-------- lib/device/dev-io.c | 12 +++++------- lib/filters/filter-internal.c | 2 +- lib/filters/filter-persistent.c | 1 + lib/log/log.c | 8 ++++---- lib/metadata/metadata.c | 10 ++++++++-- lib/metadata/vg.c | 4 ++-- tools/lvmcmdline.c | 8 ++++---- tools/toollib.c | 6 +++--- 11 files changed, 42 insertions(+), 39 deletions(-) diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index c51e157..5d4732c 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -154,7 +154,7 @@ static void _free_cached_vgmetadata(struct lvmcache_vginfo *vginfo) vginfo->cft = NULL; } - log_debug_cache("Metadata cache: VG %s wiped.", vginfo->vgname); + log_debug_cache("lvmcache: VG %s wiped.", vginfo->vgname); release_vg(vginfo->cached_vg); } @@ -197,7 +197,7 @@ static void _store_metadata(struct volume_group *vg, unsigned precommitted) return; } - log_debug_cache("Metadata cache: VG %s (%s) stored (%" PRIsize_t " bytes%s).", + log_debug_cache("lvmcache: VG %s (%s) stored (%" PRIsize_t " bytes%s).", vginfo->vgname, uuid, size, precommitted ? ", precommitted" : ""); } @@ -289,7 +289,7 @@ void lvmcache_commit_metadata(const char *vgname) return; if (vginfo->precommitted) { - log_debug_cache("Precommitted metadata cache: VG %s upgraded to committed.", + log_debug_cache("lvmcache: Upgraded pre-committed VG %s metadata to committed.", vginfo->vgname); vginfo->precommitted = 0; } @@ -616,7 +616,7 @@ struct lvmcache_vginfo *lvmcache_vginfo_from_vgid(const char *vgid) id[ID_LEN] = '\0'; if (!(vginfo = dm_hash_lookup(_vgid_hash, id))) { - log_debug_cache("Metadata cache has no info for vgid \"%s\"", id); + log_debug_cache("lvmcache has no info for vgid \"%s\"", id); return NULL; } @@ -1870,7 +1870,7 @@ static int _lvmcache_update_vgname(struct lvmcache_info *info, vginfo->vgid[0] ? vginfo->vgid : "", vginfo->vgid[0] ? ")" : "", mdabuf); } else - log_debug_cache("lvmcache initialised VG %s.", vgname); + log_debug_cache("lvmcache: Initialised VG %s.", vgname); return 1; } diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c index dd12da1..2cd38f4 100644 --- a/lib/device/dev-cache.c +++ b/lib/device/dev-cache.c @@ -708,7 +708,7 @@ static int _insert_dev(const char *path, dev_t d) if (dm_hash_lookup(_cache.names, path) == dev) { /* Hash already has matching entry present */ - log_debug("Path already cached %s.", path); + log_debug("%s: Path already cached.", path); return 1; } @@ -1423,7 +1423,7 @@ struct device *dev_cache_get(const char *name, struct dev_filter *f) if (!d || (f && !(d->flags & DEV_REGULAR) && !(f->passes_filter(f, d)))) return NULL; - log_debug_devs("Using %s", dev_name(d)); + log_debug_devs("%s: Using device (%d:%d)", dev_name(d), (int) MAJOR(d->dev), (int) MINOR(d->dev)); return d; } @@ -1533,7 +1533,7 @@ struct device *dev_iter_get(struct dev_iter *iter) struct device *d = _iter_next(iter); if (!iter->filter || (d->flags & DEV_REGULAR) || iter->filter->passes_filter(iter->filter, d)) { - log_debug_devs("Using %s", dev_name(d)); + log_debug_devs("%s: Using device (%d:%d)", dev_name(d), (int) MAJOR(d->dev), (int) MINOR(d->dev)); return d; } } diff --git a/lib/device/dev-ext.c b/lib/device/dev-ext.c index 0cc8279..0c3b435 100644 --- a/lib/device/dev-ext.c +++ b/lib/device/dev-ext.c @@ -100,8 +100,6 @@ const char *dev_ext_name(struct device *dev) return _ext_registry[dev->ext.src].name; } -static const char *_ext_attached_msg = "External handle attached to device"; - struct dev_ext *dev_ext_get(struct device *dev) { struct dev_ext *ext; @@ -110,10 +108,10 @@ struct dev_ext *dev_ext_get(struct device *dev) handle_ptr = dev->ext.handle; if (!(ext = _ext_registry[dev->ext.src].dev_ext_get(dev))) - log_error("Failed to get external handle for device %s [%s].", + log_error("%s: Failed to get external handle [%s].", dev_name(dev), dev_ext_name(dev)); else if (handle_ptr != dev->ext.handle) - log_debug_devs("%s %s [%s:%p]", _ext_attached_msg, dev_name(dev), + log_debug_devs("%s: External handle [%s:%p] attached", dev_name(dev), dev_ext_name(dev), dev->ext.handle); return ext; @@ -131,10 +129,10 @@ int dev_ext_release(struct device *dev) handle_ptr = dev->ext.handle; if (!(r = _ext_registry[dev->ext.src].dev_ext_release(dev))) - log_error("Failed to release external handle for device %s [%s:%p].", + log_error("%s: Failed to release external handle [%s:%p]", dev_name(dev), dev_ext_name(dev), dev->ext.handle); else - log_debug_devs("External handle detached from device %s [%s:%p]", + log_debug_devs("%s: External handle [%s:%p] detached", dev_name(dev), dev_ext_name(dev), handle_ptr); return r; @@ -143,7 +141,7 @@ int dev_ext_release(struct device *dev) int dev_ext_enable(struct device *dev, dev_ext_t src) { if (dev->ext.enabled && (dev->ext.src != src) && !dev_ext_release(dev)) { - log_error("Failed to enable external handle for device %s [%s].", + log_error("%s: Failed to enable external handle [%s].", dev_name(dev), _ext_registry[src].name); return 0; } @@ -160,7 +158,7 @@ int dev_ext_disable(struct device *dev) return 1; if (!dev_ext_release(dev)) { - log_error("Failed to disable external handle for device %s [%s].", + log_error("%s: Failed to disable external handle [%s].", dev_name(dev), dev_ext_name(dev)); return 0; } diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c index 519b5c7..328ec30 100644 --- a/lib/device/dev-io.c +++ b/lib/device/dev-io.c @@ -142,7 +142,7 @@ int dev_get_block_size(struct device *dev, unsigned int *physical_block_size, un r = 0; goto out; } - log_debug_devs("%s: block size is %u bytes", name, dev->block_size); + log_debug_devs("%s: Block size is %u bytes", name, dev->block_size); } #ifdef BLKPBSZGET @@ -153,7 +153,7 @@ int dev_get_block_size(struct device *dev, unsigned int *physical_block_size, un r = 0; goto out; } - log_debug_devs("%s: physical block size is %u bytes", name, dev->phys_block_size); + log_debug_devs("%s: Physical block size is %u bytes", name, dev->phys_block_size); } #elif defined (BLKSSZGET) /* if we can't get physical block size, just use logical block size instead */ @@ -163,15 +163,13 @@ int dev_get_block_size(struct device *dev, unsigned int *physical_block_size, un r = 0; goto out; } - log_debug_devs("%s: physical block size can't be determined, using logical " - "block size of %u bytes", name, dev->phys_block_size); + log_debug_devs("%s: Physical block size can't be determined: Using logical block size of %u bytes", name, dev->phys_block_size); } #else /* if even BLKSSZGET is not available, use default 512b */ if (dev->phys_block_size == -1) { dev->phys_block_size = 512; - log_debug_devs("%s: physical block size can't be determined, using block " - "size of %u bytes instead", name, dev->phys_block_size); + log_debug_devs("%s: Physical block size can't be determined: Using block size of %u bytes instead", name, dev->phys_block_size); } #endif @@ -464,7 +462,7 @@ int dev_open_flags(struct device *dev, int flags, int direct, int quiet) } if (dev->open_count && !need_excl) { - log_debug_devs("%s already opened read-only. Upgrading " + log_debug_devs("%s: Already opened read-only. Upgrading " "to read-write.", dev_name(dev)); dev->open_count++; } diff --git a/lib/filters/filter-internal.c b/lib/filters/filter-internal.c index 1a58a37..cdaee4e 100644 --- a/lib/filters/filter-internal.c +++ b/lib/filters/filter-internal.c @@ -74,7 +74,7 @@ struct dev_filter *internal_filter_create(void) f->destroy = _destroy; f->use_count = 0; - log_debug_devs("internal filter initialised."); + log_debug_devs("Internal filter initialised."); return f; } diff --git a/lib/filters/filter-persistent.c b/lib/filters/filter-persistent.c index 4e8161e..5bc0861 100644 --- a/lib/filters/filter-persistent.c +++ b/lib/filters/filter-persistent.c @@ -119,6 +119,7 @@ int persistent_filter_load(struct dev_filter *f, struct dm_config_tree **cft_out if (!config_file_read(cft)) goto_out; + log_debug_devs("Loading persistent filter cache from %s", pf->file); _read_array(pf, cft, "persistent_filter_cache/valid_devices", PF_GOOD_DEVICE); /* We don't gain anything by holding invalid devices */ diff --git a/lib/log/log.c b/lib/log/log.c index c0789b4..208959b 100644 --- a/lib/log/log.c +++ b/lib/log/log.c @@ -594,7 +594,7 @@ static void _vprint_log(int level, const char *file, int line, int dm_errno_or_c log_it: if (!logged_via_report && ((verbose_level() >= level) && !_log_suppress)) { if (verbose_level() > _LOG_DEBUG) { - (void) dm_snprintf(buf, sizeof(buf), "#%s:%d ", + (void) dm_snprintf(buf, sizeof(buf), "#%s:%-5d ", file, line); } else buf[0] = '\0'; @@ -639,7 +639,7 @@ static void _vprint_log(int level, const char *file, int line, int dm_errno_or_c } if (_log_to_file && (_log_while_suspended || !critical_section())) { - fprintf(_log_file, "%s:%d %s%s", file, line, log_command_name(), + fprintf(_log_file, "%s:%-5d %s%s", file, line, log_command_name(), _msg_prefix); va_copy(ap, orig_ap); @@ -647,7 +647,7 @@ static void _vprint_log(int level, const char *file, int line, int dm_errno_or_c va_end(ap); if (_log_file_max_lines && ++_log_file_lines >= _log_file_max_lines) { - fprintf(_log_file, "\n%s:%d %sAborting. Command has reached limit " + fprintf(_log_file, "\n%s:%-5d %sAborting. Command has reached limit " "for logged lines (LVM_LOG_FILE_MAX_LINES=" FMTu64 ").", file, line, _msg_prefix, _log_file_max_lines); @@ -673,7 +673,7 @@ static void _vprint_log(int level, const char *file, int line, int dm_errno_or_c memset(&buf, ' ', sizeof(buf)); bufused = 0; if ((n = dm_snprintf(buf, sizeof(buf), - "%s:%d %s%s", file, line, log_command_name(), + "%s:%-5d %s%s", file, line, log_command_name(), _msg_prefix)) == -1) goto done; diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index b5acf07..d823ef2 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -3797,12 +3797,18 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, struct dm_list *pvids; struct pv_list *pvl; struct dm_list all_pvs; + char uuid[64] __attribute__((aligned(8))); + unsigned seqno = 0; int reappeared = 0; struct cached_vg_fmtdata *vg_fmtdata = NULL; /* Additional format-specific data about the vg */ unsigned use_previous_vg; - log_very_verbose("Reading VG %s %.32s", vgname ?: "<no name>", vgid ?: "<no vgid>"); + uuid[0] = '\0'; + if (vgid && !id_write_format((const struct id*)vgid, uuid, sizeof(uuid))) + stack; + + log_very_verbose("Reading VG %s %s", vgname ?: "<no name>", vgid ? uuid : "<no vgid>"); if (is_orphan_vg(vgname)) { if (use_precommitted) { @@ -3879,7 +3885,7 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, /* Now determine the correct vgname if none was supplied */ if (!vgname && !(vgname = lvmcache_vgname_from_vgid(cmd->mem, vgid))) { - log_debug_metadata("Cache did not find VG name from vgid %.32s", vgid); + log_debug_metadata("Cache did not find VG name from vgid %s", uuid); return_NULL; } diff --git a/lib/metadata/vg.c b/lib/metadata/vg.c index 9f48a9b..f90ac82 100644 --- a/lib/metadata/vg.c +++ b/lib/metadata/vg.c @@ -71,7 +71,7 @@ struct volume_group *alloc_vg(const char *pool_name, struct cmd_context *cmd, dm_list_init(&vg->removed_historical_lvs); dm_list_init(&vg->removed_pvs); - log_debug_mem("Allocated VG %s at %p.", vg->name, vg); + log_debug_mem("Allocated VG %s at %p.", vg->name ? : "<no name>", vg); return vg; } @@ -86,7 +86,7 @@ static void _free_vg(struct volume_group *vg) return; } - log_debug_mem("Freeing VG %s at %p.", vg->name, vg); + log_debug_mem("Freeing VG %s at %p.", vg->name ? : "<no name>", vg); dm_hash_destroy(vg->hostnames); dm_pool_destroy(vg->vgmem); diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index ed73b8d..22f1c60 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -1864,8 +1864,8 @@ out: } } - log_debug("Using command index %d id %s enum %d.", - best_i, commands[best_i].command_id, commands[best_i].command_enum); + log_debug("Recognised command %s (id %d / enum %d).", + commands[best_i].command_id, best_i, commands[best_i].command_enum); return &commands[best_i]; } @@ -2873,9 +2873,9 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) goto_out; init_dmeventd_monitor(monitoring); - log_debug("Processing: %s", cmd->cmd_line); + log_debug("Processing command: %s", cmd->cmd_line); log_debug("Command pid: %d", getpid()); - log_debug("system ID: %s", cmd->system_id ? : ""); + log_debug("System ID: %s", cmd->system_id ? : ""); #ifdef O_DIRECT_SUPPORT log_debug("O_DIRECT will be used"); diff --git a/tools/toollib.c b/tools/toollib.c index 2898525..9b88341 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -1967,7 +1967,7 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags, (!dm_list_empty(arg_tags) && str_list_match_list(arg_tags, &vg->tags, NULL))) && select_match_vg(cmd, handle, vg) && _select_matches(handle)) { - log_very_verbose("Process single VG %s", vg_name); + log_very_verbose("Processing VG %s %s", vg_name, vg_uuid ? uuid : ""); ret = process_single_vg(cmd, vg_name, vg, handle); _update_selection_result(handle, &whole_selected); @@ -2231,7 +2231,7 @@ int process_each_vg(struct cmd_context *cmd, * . A VG name is specified which may refer to one * of multiple VGs on the system with that name. */ - log_debug("Get list of VGs on system"); + log_very_verbose("Obtaining the complete list of VGs to process"); if (!get_vgnameids(cmd, &vgnameids_on_system, NULL, include_internal)) { ret_max = ECMD_FAILED; @@ -3733,7 +3733,7 @@ int process_each_lv(struct cmd_context *cmd, * . A VG name is specified which may refer to one * of multiple VGs on the system with that name. */ - log_debug("Get list of VGs on system"); + log_very_verbose("Obtaining the complete list of VGs before processing their LVs"); if (!get_vgnameids(cmd, &vgnameids_on_system, NULL, 0)) { ret_max = ECMD_FAILED;
1
0
0
0
master - persistent filter: Skip import before rescan
by Alasdair Kergon
13 Nov '17
13 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=598fcccf458010dac5d9e…
Commit: 598fcccf458010dac5d9e319db943629e15d5b16 Parent: fe69a8d21573f37cb3fd503ee40ceb00b555a7e2 Author: Alasdair G Kergon <agk(a)redhat.com> AuthorDate: Mon Nov 13 19:45:16 2017 +0000 Committer: Alasdair G Kergon <agk(a)redhat.com> CommitterDate: Mon Nov 13 19:45:16 2017 +0000 persistent filter: Skip import before rescan The persistent filter should not be imported by any command that doesn't use it so take addtional note of REQUIRES_FULL_LABEL_SCAN (for vgrename) and introduce IGNORE_PERSISTENT_FILTER for vgscan and pvscan. --- WHATS_NEW | 1 + tools/command.c | 1 + tools/commands.h | 4 ++-- tools/lvmcmdline.c | 21 +++++++++++++++++++-- tools/tools.h | 2 ++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 0775d7b..1c8838c 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.177 - ==================================== + Avoid importing persistent filter in vgscan/pvscan/vgrename. Fix memleak of string buffer when vgcfgbackup runs in secure mode. Do not print error when clvmd cannot find running clvmd. Prevent start of new merge of snapshot if origin is already being merged. diff --git a/tools/command.c b/tools/command.c index 17b5eb4..1a712cc 100644 --- a/tools/command.c +++ b/tools/command.c @@ -140,6 +140,7 @@ static inline int configtype_arg(struct cmd_context *cmd __attribute__((unused)) #define ENABLE_DUPLICATE_DEVS 0x00000400 #define DISALLOW_TAG_ARGS 0x00000800 #define GET_VGNAME_FROM_OPTIONS 0x00001000 +#define IGNORE_PERSISTENT_FILTER 0x00002000 /* create foo_CMD enums for command def ID's in command-lines.in */ diff --git a/tools/commands.h b/tools/commands.h index 4739479..d65330a 100644 --- a/tools/commands.h +++ b/tools/commands.h @@ -149,7 +149,7 @@ xx(pvs, xx(pvscan, "List all physical volumes", - PERMITTED_READ_ONLY | LOCKD_VG_SH | NO_LVMETAD_AUTOSCAN) + PERMITTED_READ_ONLY | LOCKD_VG_SH | NO_LVMETAD_AUTOSCAN | IGNORE_PERSISTENT_FILTER) xx(segtypes, "List available segment types", @@ -233,7 +233,7 @@ xx(vgs, xx(vgscan, "Search for all volume groups", - PERMITTED_READ_ONLY | ALL_VGS_IS_DEFAULT | LOCKD_VG_SH | NO_LVMETAD_AUTOSCAN) + PERMITTED_READ_ONLY | ALL_VGS_IS_DEFAULT | LOCKD_VG_SH | NO_LVMETAD_AUTOSCAN | IGNORE_PERSISTENT_FILTER) xx(vgsplit, "Move physical volumes into a new or existing volume group", diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index f2e208c..ed73b8d 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -2706,6 +2706,21 @@ static int _cmd_no_meta_proc(struct cmd_context *cmd) return cmd->cname->flags & NO_METADATA_PROCESSING; } +static int _cmd_no_lvmetad_autoscan(struct cmd_context *cmd) +{ + return cmd->cname->flags & NO_LVMETAD_AUTOSCAN; +} + +static int _cmd_requires_full_label_scan(struct cmd_context *cmd) +{ + return cmd->cname->flags & REQUIRES_FULL_LABEL_SCAN; +} + +static int _cmd_ignores_persistent_filter(struct cmd_context *cmd) +{ + return cmd->cname->flags & IGNORE_PERSISTENT_FILTER; +} + int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) { struct dm_config_tree *config_string_cft, *config_profile_command_cft, *config_profile_metadata_cft; @@ -2831,8 +2846,10 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) /* Note: Load persistent cache only if we haven't refreshed toolcontext! * If toolcontext has been refreshed, it means config has changed * and we can't rely on persistent cache anymore. + * Similarly ignore the persistent cache if the command is going to discard it regardless. */ - if (!cmd->initialized.filters && !_cmd_no_meta_proc(cmd) && !init_filters(cmd, !refresh_done)) + if (!cmd->initialized.filters && !_cmd_no_meta_proc(cmd) && + !init_filters(cmd, !(refresh_done || _cmd_requires_full_label_scan(cmd) || _cmd_ignores_persistent_filter(cmd)))) return_ECMD_FAILED; if (arg_is_set(cmd, readonly_ARG)) @@ -2945,7 +2962,7 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) * In this case, disable the *use* of lvmetad by this command, reverting to * disk scanning. */ - if (lvmetad_used() && !(cmd->cname->flags & NO_LVMETAD_AUTOSCAN)) { + if (lvmetad_used() && !_cmd_no_lvmetad_autoscan(cmd)) { if (cmd->include_foreign_vgs || !lvmetad_token_matches(cmd)) { if (lvmetad_used() && !lvmetad_pvscan_all_devs(cmd, cmd->include_foreign_vgs ? 1 : 0)) { log_warn("WARNING: Not using lvmetad because cache update failed."); diff --git a/tools/tools.h b/tools/tools.h index 53f8ddc..dc29e4b 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -137,6 +137,8 @@ struct arg_value_group_list { #define DISALLOW_TAG_ARGS 0x00000800 /* Command may need to find VG name in an option value. */ #define GET_VGNAME_FROM_OPTIONS 0x00001000 +/* Command must not load the contents saved by the persistent filter */ +#define IGNORE_PERSISTENT_FILTER 0x00002000 void usage(const char *name);
1
0
0
0
master - tests: use nonflusing status
by Zdenek Kabelac
11 Nov '17
11 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=fe69a8d21573f37cb3fd5…
Commit: fe69a8d21573f37cb3fd503ee40ceb00b555a7e2 Parent: dd06a0a4a68d5619050da76acdd508a89390d5f2 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Fri Nov 10 16:18:41 2017 +0100 Committer: Zdenek Kabelac <zkabelac(a)redhat.com> CommitterDate: Sat Nov 11 01:00:35 2017 +0100 tests: use nonflusing status Avoid being blocked when reporting status with flushing on some stacked device tree. --- test/lib/utils.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/test/lib/utils.sh b/test/lib/utils.sh index 65bb1e6..bf472a4 100644 --- a/test/lib/utils.sh +++ b/test/lib/utils.sh @@ -180,7 +180,7 @@ STACKTRACE() { echo "<======== Inactive table ========>" dmsetup table --inactive | grep "$PREFIX" | sed -e "s,^,## DMITABLE: ," echo "<======== Status ========>" - dmsetup status | grep "$PREFIX" | sed -e "s,^,## DMSTATUS: ," + dmsetup status --noflush | grep "$PREFIX" | sed -e "s,^,## DMSTATUS: ," echo "<======== Tree ========>" dmsetup ls --tree | sed -e "s,^,## DMTREE: ," echo "<======== Recursive list of $DM_DEV_DIR ========>"
1
0
0
0
master - lv_lock_holder: unused cache-pool is not lock holder
by Zdenek Kabelac
11 Nov '17
11 Nov '17
Gitweb:
https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=dd06a0a4a68d5619050da…
Commit: dd06a0a4a68d5619050da76acdd508a89390d5f2 Parent: 52cee9dd83da0b9b6766a4b3ee6bdd3699bf4346 Author: Zdenek Kabelac <zkabelac(a)redhat.com> AuthorDate: Sat Nov 11 00:18:22 2017 +0100 Committer: Zdenek Kabelac <zkabelac(a)redhat.com> CommitterDate: Sat Nov 11 00:59:46 2017 +0100 lv_lock_holder: unused cache-pool is not lock holder Unused cache-pool is only a constainer for data and metadata, and does not present localble entity. --- lib/metadata/lv.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c index e50b2bb..4d35efe 100644 --- a/lib/metadata/lv.c +++ b/lib/metadata/lv.c @@ -1613,6 +1613,9 @@ const struct logical_volume *lv_lock_holder(const struct logical_volume *lv) continue; /* Skip thin snaphost */ if (lv_is_pending_delete(sl->seg->lv)) continue; /* Skip deleted LVs */ + if (lv_is_cache_pool(sl->seg->lv) && + !lv_is_used_cache_pool(sl->seg->lv)) + continue; /* Skip unused cache-pool */ return lv_lock_holder(sl->seg->lv); }
1
0
0
0
← Newer
1
2
3
4
5
6
7
8
9
10
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
Results per page:
10
25
50
100
200