1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

vgchange: max_pv limited to uint32

Solves: https://bugzilla.redhat.com/1280496

The only reasonable behaviour here is to error on
any number out of accepted range (i.e. now numbers
wrapping around with some hidden logic).

As this is plain bug there is no support for
backward compatibility since noone should
set numbers >UINT32_MAX and expect 0 or error
depending on how big number was used....

TODO: more fields might need to be converted.
This commit is contained in:
Zdenek Kabelac 2017-01-03 13:04:51 +01:00
parent 9f65a3f0c5
commit 4fd41cf67f
3 changed files with 9 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.169 - Version 2.02.169 -
===================================== =====================================
vgchange -p accepts only uint32 numbers.
Report thin LV date for merged LV when the merge is in progress. Report thin LV date for merged LV when the merge is in progress.
Detect if snapshot merge really started before polling for progress. Detect if snapshot merge really started before polling for progress.
Checking LV for merging origin requires also it has merged snapshot. Checking LV for merging origin requires also it has merged snapshot.

View File

@ -53,6 +53,13 @@ not vgchange -p 2 $vg 2>err
grep "MaxPhysicalVolumes is less than the current number $pv_count of PVs for" err grep "MaxPhysicalVolumes is less than the current number $pv_count of PVs for" err
check vg_field $vg max_pv 128 check vg_field $vg max_pv 128
# try some numbers around MAX limit (uint32)
vgchange -p 4294967295 $vg
invalid vgchange -p 4294967296 $vg
invalid vgchange -p 18446744073709551615 $vg
invalid vgchange -p 18446744073709551616 $vg
check vg_field $vg max_pv 4294967295
# vgchange -l MaxLogicalVolumes # vgchange -l MaxLogicalVolumes
check vg_field $vg max_lv 0 check vg_field $vg max_lv 0
invalid vgchange -l -128 $vg invalid vgchange -l -128 $vg

View File

@ -198,7 +198,7 @@ arg(novolumegroup_ARG, 'n', "novolumegroup", NULL, 0, 0)
arg(oldpath_ARG, 'n', "oldpath", NULL, 0, 0) arg(oldpath_ARG, 'n', "oldpath", NULL, 0, 0)
arg(options_ARG, 'o', "options", string_arg, ARG_GROUPABLE, 0) arg(options_ARG, 'o', "options", string_arg, ARG_GROUPABLE, 0)
arg(sort_ARG, 'O', "sort", string_arg, ARG_GROUPABLE, 0) arg(sort_ARG, 'O', "sort", string_arg, ARG_GROUPABLE, 0)
arg(maxphysicalvolumes_ARG, 'p', "maxphysicalvolumes", int_arg, 0, 0) arg(maxphysicalvolumes_ARG, 'p', "maxphysicalvolumes", uint32_arg, 0, 0)
arg(permission_ARG, 'p', "permission", permission_arg, 0, 0) arg(permission_ARG, 'p', "permission", permission_arg, 0, 0)
arg(partial_ARG, 'P', "partial", NULL, 0, 0) arg(partial_ARG, 'P', "partial", NULL, 0, 0)
arg(physicalvolume_ARG, 'P', "physicalvolume", NULL, 0, 0) arg(physicalvolume_ARG, 'P', "physicalvolume", NULL, 0, 0)