Cause:
Previously some lvm2app functions were returning values in sectors instead of bytes.
Consequence:
All return values from lvm2app should be in bytes, thus using sector values as byte values were giving incorrect results.
Fix:
Return values from lvm2app have been validated to return byte values.
Result:
Values for origin_size, vg_extent_size, stripe_size, region_size, chunk_size, seg_start, pvseg_size are now properly reported in bytes.
Description of problem:
The lvm2app library reports the stripe size of volumes
incorrectly.
~# lvs --version
LVM version: 2.02.98(2) (2012-10-15)
Library version: 1.02.77 (2012-10-15)
Driver version: 4.23.0
For example if I create a volume with 2 stripes of 128k:
~# lvcreate -i 2 -I 128 --extents 100 vg1
Logical volume "lvol0" created
The lvs command gets it right:
~# lvs -o +stripe_size
LV VG Attr LSize Pool Data% Move Log Copy% Convert Stripe
lvol0 vg1 -wi-a---- 100.00m 128.00k
However, the number from the library is as follows:
value = lvm_lvseg_get_property(lvm_lvseg, "stripesize");
if (value.is_valid)
qDebug() << "Stripe size: " << value.value.integer;
Result:
Stripe size: 256
The library seems to be reporting the number of sectors since
256 * 512 = 131072 bytes which is 128k.
The error occures with any stripe size;
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHBA-2013-1704.html
Description of problem: The lvm2app library reports the stripe size of volumes incorrectly. ~# lvs --version LVM version: 2.02.98(2) (2012-10-15) Library version: 1.02.77 (2012-10-15) Driver version: 4.23.0 For example if I create a volume with 2 stripes of 128k: ~# lvcreate -i 2 -I 128 --extents 100 vg1 Logical volume "lvol0" created The lvs command gets it right: ~# lvs -o +stripe_size LV VG Attr LSize Pool Data% Move Log Copy% Convert Stripe lvol0 vg1 -wi-a---- 100.00m 128.00k However, the number from the library is as follows: value = lvm_lvseg_get_property(lvm_lvseg, "stripesize"); if (value.is_valid) qDebug() << "Stripe size: " << value.value.integer; Result: Stripe size: 256 The library seems to be reporting the number of sectors since 256 * 512 = 131072 bytes which is 128k. The error occures with any stripe size;