mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Fix vgsplit internal counting of snapshot LVs.
This commit is contained in:
parent
029d4de4be
commit
8e8baf89c0
@ -1,5 +1,6 @@
|
||||
Version 2.02.36 -
|
||||
=================================
|
||||
Fix vgsplit internal counting of snapshot LVs.
|
||||
Fix internal snapshot_count when vgmerge with snapshots in source VG.
|
||||
Simply clvmd-openais by using non-async saLckResourceLock.
|
||||
Check lv_count in vg_validate.
|
||||
|
@ -202,7 +202,23 @@ struct volume_group {
|
||||
uint32_t pv_count;
|
||||
struct list pvs;
|
||||
|
||||
/* logical volumes */
|
||||
/*
|
||||
* logical volumes
|
||||
* The following relationship should always hold:
|
||||
* list_size(lvs) = lv_count + 2 * snapshot_count
|
||||
*
|
||||
* Snapshots consist of 2 instances of "struct logical_volume":
|
||||
* - cow (lv_name is visible to the user)
|
||||
* - snapshot (lv_name is 'snapshotN')
|
||||
* Neither of these instances is reflected in lv_count, but we
|
||||
* multiply the snapshot_count by 2.
|
||||
*
|
||||
* Mirrors consist of multiple instances of "struct logical_volume":
|
||||
* - one for the mirror log
|
||||
* - one for each mirror leg
|
||||
* - one for the user-visible mirror LV
|
||||
* all of the instances are reflected in lv_count.
|
||||
*/
|
||||
uint32_t lv_count;
|
||||
uint32_t snapshot_count;
|
||||
struct list lvs;
|
||||
|
@ -109,7 +109,7 @@ static int _move_one_lv(struct volume_group *vg_from,
|
||||
if (lv->status & SNAPSHOT) {
|
||||
vg_from->snapshot_count--;
|
||||
vg_to->snapshot_count++;
|
||||
} else {
|
||||
} else if (!lv_is_cow(lv)) {
|
||||
vg_from->lv_count--;
|
||||
vg_to->lv_count++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user