Bug 2108326

Summary: use_sparse_index doesn't appear to work, even with the suggested minimum giving by the warning message
Product: Red Hat Enterprise Linux 8 Reporter: Corey Marthaler <cmarthal>
Component: lvm2Assignee: Zdenek Kabelac <zkabelac>
lvm2 sub component: VDO QA Contact: cluster-qe <cluster-qe>
Status: POST --- Docs Contact:
Severity: low    
Priority: unspecified CC: agk, awalsh, heinzm, jbrassow, mcsontos, prajnoha, zkabelac
Version: 8.7Keywords: Triaged
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 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 Corey Marthaler 2022-07-18 20:53:13 UTC
Description of problem:
use_sparse_index, I've tried guessing enough, and no devel test results were provided with rfe 2100608, so as far as I'm concerned, this option doesn't work.

There is no default value:
[root@hayes-01 ~]# lvs -a -o +vdo_use_sparse_index vdo_sanity/vdo_lv
  LV     VG         Attr       LSize   Pool     Origin Data%  Meta%  Move Log Cpy%Sync Convert VDOSparseIndex
  vdo_lv vdo_sanity vwi-a-v--- 100.00g vdo_pool        0.00                                                  


[root@hayes-01 ~]# lvconvert --yes --type vdo-pool -n vdo_lv --vdosettings 'vdo_use_sparse_index=1' -V100G vdo_sanity/vdo_pool
  Unknown VDO setting "vdo_use_sparse_index".


[root@hayes-01 ~]# lvconvert --yes --type vdo-pool -n vdo_lv --vdosettings 'vdo_sparse_index=1' -V100G vdo_sanity/vdo_pool
  WARNING: Converting logical volume vdo_sanity/vdo_pool to VDO pool volume with formating.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Minimum required size for VDO volume: 26130157568 bytes
vdoformat: formatVDO failed on '/dev/vdo_sanity/vdo_pool': VDO Status: Out of space
  Command /usr/bin/vdoformat failed.
  Cannot format VDO pool volume vdo_sanity/vdo_pool.


[root@hayes-01 ~]# lvconvert --yes --type vdo-pool -n vdo_lv --vdosettings 'vdo_sparse_index=26130157568' -V100G vdo_sanity/vdo_pool
  WARNING: Converting logical volume vdo_sanity/vdo_pool to VDO pool volume with formating.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Minimum required size for VDO volume: 26130157568 bytes
vdoformat: formatVDO failed on '/dev/vdo_sanity/vdo_pool': VDO Status: Out of space
  Command /usr/bin/vdoformat failed.
  Cannot format VDO pool volume vdo_sanity/vdo_pool.


[root@hayes-01 ~]# lvconvert --yes --type vdo-pool -n vdo_lv --vdosettings 'vdo_sparse_index=26130157568b' -V100G vdo_sanity/vdo_pool
  Parse error at byte 30 (line 1): unexpected token


[root@hayes-01 ~]# lvconvert --yes --type vdo-pool -n vdo_lv --vdosettings 'vdo_sparse_index=26130157568 bytes' -V100G vdo_sanity/vdo_pool
  Parse error at byte 35 (line 1): unexpected token


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


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Zdenek Kabelac 2022-08-11 15:37:04 UTC
vdo_use_sparse_index =  1|0    is used to enable/disable  sparse indexing   (dense/sparse  type of indexing)

For specification of indexing size for deduplication  there is option:

vdo_index_memory_size_mb      (with _mb suffix to emphasize the input size value is in MiB units)
(the range is  256MiB .. 1TiB)


--vdosettings is accepting same settings as lvm.conf  (which provides full description of all vdo settings)

As of now - there is no support for any 'suffixes' past the specified parameter value as the original text format has only a simple form of:   setting = value


Since there is identified bug in the processing of vdo_ prefix  'vdo_use_sparse_index' has not been parsed properly - so ATM only 'sparse_index=1' works correctly to continue with testing on this BZ.

The error message about the 26130157568 bytes is for minimal size of converted LV  (and comes from vdoformat tool).

We may need to think if it is worth to pass some vdo size compution into lvm2 code base to avoid calling tools for incorrect parameters.

Comment 2 Zdenek Kabelac 2022-08-15 12:32:43 UTC
This upstream patch is correcting parsing of  vdo_use_  prefixed settings:

https://listman.redhat.com/archives/lvm-devel/2022-August/024268.html