Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1576539 - Growing physical size should not suspend vdo device when the size is equal
Summary: Growing physical size should not suspend vdo device when the size is equal
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: kmod-kvdo
Version: 7.5
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: rc
: ---
Assignee: Matthew Sakai
QA Contact: Jakub Krysl
URL:
Whiteboard:
Depends On:
Blocks: 1597886 1600662
TreeView+ depends on / blocked
 
Reported: 2018-05-09 17:12 UTC by Jakub Krysl
Modified: 2018-10-30 09:40 UTC (History)
5 users (show)

Fixed In Version: 6.1.1.99
Doc Type: If docs needed, set a value
Doc Text:
Previously, VDO volumes were unable to grow if the underlying block device increased in size while the system was powered off or the VDO volume was offline. With this update, VDO correctly checks the requested size and the current size of the device, and, as a result, the described problem no longer occurs.
Clone Of:
: 1600662 (view as bug list)
Environment:
Last Closed: 2018-10-30 09:39:31 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2018:3094 None None None 2018-10-30 09:40:09 UTC

Description Jakub Krysl 2018-05-09 17:12:55 UTC
Description of problem:
When growing physical size ('vdo growPhysical') without growing the storage under at all (new_size == old_size), kvdo does not stop the process at 'preparing to grow' but after suspending the volume. This is pointless action as there is no growing happening.

Version-Release number of selected component (if applicable):
vdo-6.1.0.149-16

How reproducible:
100%

Steps to Reproduce:
1. vdo create --name vdo --device device
2. vdo growPhysical --name vdo

Actual results:

# vdo growPhysical --name vdo
vdo: ERROR - Cannot grow physical on VDO vdo; device-mapper: message ioctl on vdo  failed: Invalid argument
vdo: ERROR - device-mapper: message ioctl on vdo  failed: Invalid argument

/var/log/messages:
[22275.407669] kvdo1:dmsetup: Preparing to resize physical to 13892608
[22275.438719] kvdo1:dmsetup: Done preparing to resize physical
[22275.470112] kvdo1:dmsetup: suspending device 'vdo'
[22275.560291] kvdo1:dmsetup: device 'vdo' suspended
[22275.586285] kvdo1:dmsetup: Requested physical block count 13892608 not greater than 13892608
[22275.629681] kvdo1:dmsetup: resuming device 'vdo'
[22275.651300] kvdo1:dmsetup: device 'vdo' resumed


Expected results:
# vdo growPhysical --name vdo
vdo: ERROR - Cannot grow physical on VDO vdo; device-mapper: message ioctl on vdo  failed: Invalid argument
vdo: ERROR - device-mapper: message ioctl on vdo  failed: Invalid argument

/var/log/messages:
[22275.407669] kvdo1:dmsetup: Preparing to resize physical to 13892608
[22275.586285] kvdo1:dmsetup: Requested physical block count 13892608 not greater than 13892608

Additional info:
note: this BZ does not aim at exposing the message to user

Comment 3 Jakub Krysl 2018-07-09 11:40:58 UTC
Tested on:
RHEL-7.6-20180626.0
kernel-3.10.0-915.el7
kmod-vdo-6.1.1.99-1.el7
vdo-6.1.1.99-2.el7

# vdo create --name vdo --device /dev/sdb
Creating VDO vdo
Starting VDO vdo
Starting compression on VDO vdo
VDO instance 1 volume is ready at /dev/mapper/vdo
# vdo growPhysical --name vdo --verbose
    dmsetup status vdo
    dmsetup message vdo 0 prepareToGrowPhysical
vdo: ERROR - Cannot prepare to grow physical on VDO vdo; device-mapper: message ioctl on vdo  failed: Invalid argument
vdo: ERROR - device-mapper: message ioctl on vdo  failed: Invalid argument

/var/log/messages:
[ 8230.503025] kvdo1:dmsetup: Preparing to resize physical to 536874240


So now VDO stops the operation right at the beginning at 'preparing to resize physical', which is correct. But now user has no indication what went wrong, just failed ioctl with 'Invalid argument'. The message in /var/log/messages' is gone.
Is it possible to be a bit more verbose and provide a reason why the operation failed?

Comment 4 Matthew Sakai 2018-07-10 00:00:21 UTC
This the reason why BZ 1597886 was logged. (It is a separate BZ because we weren't sure if we would want to z-stream what's basically  logging change.)

The fix I have implemented is to restore the log message
"Requested physical block count <X> not greater than <X>". Does that fix seem sufficient?

Alos, could I get some clarity as to whether this change should be made as part of this BZ, of as part of BZ 1597886, or both? I would like to get this fixed, but I a bit unclear on the proper bookkeeping involved.

Comment 5 Jakub Krysl 2018-07-10 07:19:53 UTC
I think it does not matter much in this case, as the regression is not functional but design/doc. Usually it should be fixed under the original BZ, but I would say fix it under the BZ 1597886 as it is providing a lot of information regarding the issue. Plus this BZ is only about not suspending the device and the device is not suspended at all any more...

Restoring the message without suspending the device is fine. :) Basically:
/var/log/messages:
[22275.407669] kvdo1:dmsetup: Preparing to resize physical to 13892608
[22275.586285] kvdo1:dmsetup: Requested physical block count 13892608 not greater than 13892608

I will link them together, because BZ 1597886 is not reproducible without this one being in.

Comment 8 errata-xmlrpc 2018-10-30 09:39:31 UTC
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.

https://access.redhat.com/errata/RHBA-2018:3094


Note You need to log in before you can comment on or make changes to this bug.