Bug 1511091

Summary: vdo create --vdoLogicalThreads 0 does not check if --vdoPhysicalThreads and --vdoHashZoneThreads are both 0
Product: Red Hat Enterprise Linux 7 Reporter: Jakub Krysl <jkrysl>
Component: vdoAssignee: Ken Raeburn <raeburn>
Status: CLOSED ERRATA QA Contact: Jakub Krysl <jkrysl>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.5CC: awalsh, limershe, raeburn
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 6.1.0.45 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-04-10 15:47:46 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jakub Krysl 2017-11-08 16:13:47 UTC
Description of problem:
As subject says, creating VDO with only 1 of those options specified leads to VDO actually trying to create it and device-mapper catching the error.

# vdo create --device /dev/sdc --name vdo --verbose --vdoLogicalThreads 0
Creating VDO vdo
    modprobe kvdo
    vdoformat --uds-checkpoint-frequency=0 --uds-memory-size=0.25 /dev/sdc
    vdodumpconfig /dev/sdc
Starting VDO vdo
    dmsetup status vdo
    modprobe kvdo
    dmsetup create vdo --table '0 11721045168 dedupe /dev/sdc 4096 disabled 0 32768 16380 on sync vdo ack=1,bio=4,bioRotationInterval=64,cpu=2,hash=1,logical=0,physical=1'
vdo: ERROR - Could not set up device mapper for vdo
Removing VDO vdo
Stopping VDO vdo
    dmsetup status vdo
vdo: ERROR - device-mapper: reload ioctl on vdo  failed: Invalid argument

console:
[B[22976.417374] device-mapper: table: 253:2: dedupe: Logical, physical, and hash zones counts must all be zero or all non-zero                                                                                    
[22976.428426] device-mapper: ioctl: error adding target to table                                        


# vdo create --device /dev/sdc --name vdo --verbose --vdoPhysicalThreads 0
Creating VDO vdo
    modprobe kvdo
    vdoformat --uds-checkpoint-frequency=0 --uds-memory-size=0.25 /dev/sdc
    vdodumpconfig /dev/sdc
Starting VDO vdo
    dmsetup status vdo
    modprobe kvdo
    dmsetup create vdo --table '0 11721045168 dedupe /dev/sdc 4096 disabled 0 32768 16380 on sync vdo ack=1,bio=4,bioRotationInterval=64,cpu=2,hash=1,logical=1,physical=0'
vdo: ERROR - Could not set up device mapper for vdo
Removing VDO vdo
Stopping VDO vdo
    dmsetup status vdo
vdo: ERROR - device-mapper: reload ioctl on vdo  failed: Invalid argument
[root@storageqe-24 raid]#

console:
[23218.818914] device-mapper: table: 253:2: dedupe: Logical, physical, and hash zones counts must all be zero or all non-zero                                                                                      
[23218.829947] device-mapper: ioctl: error adding target to table  

--vdoHashZoneThreads produce different error, more in BZ 1511085.

Version-Release number of selected component (if applicable):
vdo-6.1.0.34-8

How reproducible:
100%

Steps to Reproduce:
1.vdo create --device /dev/sdc --name vdo --verbose --vdoPhysicalThreads 0 
2.vdo create --device /dev/sdc --name vdo --verbose --vdoLogicalThreads 0

Actual results:
device-mapper catching error, giving info in console. Not enough info in terminal

Expected results:
vdo catching the error, requesting all 3 to be 0

Additional info:

Comment 2 Ken Raeburn 2017-11-10 23:55:20 UTC
New check for consistent option values added.

Comment 4 Jakub Krysl 2017-11-14 14:49:41 UTC
Tested with vdo-6.1.0.46-9:

# vdo create --name vdo --device /dev/sda3 --vdoLogicalThreads 0
vdo: ERROR - Options --vdoHashZoneThreads, --vdoLogicalThreads, and --vdoPhysicalThreads must either all be zero or all be nonzero

# vdo create --name vdo --device /dev/sda3 --vdoLogicalThreads 0 --vdoPhysicalThreads 0 --vdoHashZoneThreads 0 --verbose
Creating VDO vdo
    modprobe kvdo
    vdoformat --uds-checkpoint-frequency=0 --uds-memory-size=0.25 /dev/sda3
    vdodumpconfig /dev/sda3
Starting VDO vdo
    dmsetup status vdo
    modprobe kvdo
    dmsetup create vdo --table '0 940036096 dedupe /dev/sda3 4096 disabled 0 32768 16380 on sync vdo ack=1,bio=4,bioRotationInterval=64,cpu=2,hash=0,logical=0,physical=0'
    dmsetup status vdo
Starting compression on VDO vdo
    dmsetup message vdo 0 compression on
    dmsetup status vdo
VDO instance 3 volume is ready at /dev/mapper/vdo

Comment 7 errata-xmlrpc 2018-04-10 15:47:46 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/RHEA-2018:0871