Bug 1379357
Summary: | gi.overrides.BlockDev.LVMError: Failed to call the 'PvScan' method on the '/com/redhat/lvmdbus1/Manager' object: GDBus.Error:org.freedesktop.DBus.Python.KeyError: Traceback (most recent call last): | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | [Community] LVM and device-mapper | Reporter: | Jiri Konecny <jkonecny> | ||||||||||||||||||||||||||||||||
Component: | lvm2 | Assignee: | LVM and device-mapper development team <lvm-team> | ||||||||||||||||||||||||||||||||
lvm2 sub component: | lvmdbusd | QA Contact: | Tony Asleson <tasleson> | ||||||||||||||||||||||||||||||||
Status: | CLOSED ERRATA | Docs Contact: | |||||||||||||||||||||||||||||||||
Severity: | unspecified | ||||||||||||||||||||||||||||||||||
Priority: | unspecified | CC: | agk, anaconda-maint-list, g.kaviyarasu, heinzm, jbrassow, jonathan, mkolman, msnitzer, prajnoha, tasleson, vanmeeuwen+fedora, vpodzime, zkabelac | ||||||||||||||||||||||||||||||||
Version: | 2.02.165 | Flags: | rule-engine:
lvm-technical-solution?
rule-engine: lvm-test-coverage? |
||||||||||||||||||||||||||||||||
Target Milestone: | --- | ||||||||||||||||||||||||||||||||||
Target Release: | --- | ||||||||||||||||||||||||||||||||||
Hardware: | x86_64 | ||||||||||||||||||||||||||||||||||
OS: | Unspecified | ||||||||||||||||||||||||||||||||||
Whiteboard: | abrt_hash:adc0ad632be80d4de0155aff741db9440789a40ca5dd34baf70bcd00aaa73183; | ||||||||||||||||||||||||||||||||||
Fixed In Version: | 2.02.166 | Doc Type: | If docs needed, set a value | ||||||||||||||||||||||||||||||||
Doc Text: | Story Points: | --- | |||||||||||||||||||||||||||||||||
Clone Of: | Environment: | ||||||||||||||||||||||||||||||||||
Last Closed: | 2017-09-13 15:47:40 UTC | Type: | --- | ||||||||||||||||||||||||||||||||
Regression: | --- | Mount Type: | --- | ||||||||||||||||||||||||||||||||
Documentation: | --- | CRM: | |||||||||||||||||||||||||||||||||
Verified Versions: | Category: | --- | |||||||||||||||||||||||||||||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||||||||||||||||||||||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||||||||||||||||||||||||||||
Embargoed: | |||||||||||||||||||||||||||||||||||
Attachments: |
|
Description
Jiri Konecny
2016-09-26 12:56:28 UTC
Created attachment 1204817 [details]
File: anaconda-tb
Created attachment 1204818 [details]
File: anaconda.log
Created attachment 1204819 [details]
File: dnf.librepo.log
Created attachment 1204820 [details]
File: environ
Created attachment 1204821 [details]
File: hawkey.log
Created attachment 1204822 [details]
File: ks.cfg
Created attachment 1204823 [details]
File: lsblk_output
Created attachment 1204824 [details]
File: lvm.log
Created attachment 1204825 [details]
File: nmcli_dev_list
Created attachment 1204826 [details]
File: os_info
Created attachment 1204827 [details]
File: storage.log
Created attachment 1204828 [details]
File: syslog
Created attachment 1204829 [details]
File: ifcfg.log
Created attachment 1204830 [details]
File: packaging.log
Created attachment 1204831 [details]
File: program.log
According to the traceback this looks like an issue in the lvmdbusd daemon. It appears that the lvm dbus code is throwing an exception, because multiple devices have a device path of '[unknown]'. The lvm dbus service keeps look up tables (hash table) which provides look up capabilities so that users can look up based on uuid or lvm id (pv device path, full lv name, vg name etc.). If multiple pv entries have the same pv device path the code gets confused as we have 2 or more pv objects which are using the same "lvm id" look up. So if 1 of them changes from unknown -> /dev/vdb1 then that unknown entry gets removed so we then have 1 or more object entries which no longer have a "lvm id" entry which will raise an exception when we try to delete a non-existent look up entry. Will add checks to handle this situation and accommodate non-unique pv device paths. Correct upstream with: https://git.fedorahosted.org/cgit/lvm2.git/commit/?id=063265eacda95dbc1567e647734a000c8d68c8b7 This issue was re-created by creating 2 loopback block devices and a third regular disk, creating a VG that utilized all three devices and then disconnected the loopback devices and then add them back one by one. (In reply to Tony Asleson from comment #18) > Correct upstream with: > https://git.fedorahosted.org/cgit/lvm2.git/commit/ > ?id=063265eacda95dbc1567e647734a000c8d68c8b7 Are you sure about this weird-looking comparison of a boolean value and a function? + if path_create == pv_obj_path_generate and \ + lvm_id == '[unknown]': Otherwise the fix looks good to me. (In reply to Vratislav Podzimek from comment #20) > (In reply to Tony Asleson from comment #18) > > Correct upstream with: > > https://git.fedorahosted.org/cgit/lvm2.git/commit/ > > ?id=063265eacda95dbc1567e647734a000c8d68c8b7 > > Are you sure about this weird-looking comparison of a boolean value and a > function? > > + if path_create == pv_obj_path_generate and \ > + lvm_id == '[unknown]': > > Otherwise the fix looks good to me. Unfortunately the method documentation is incorrect, I will fix that shortly. The variable 'path_create' is actually the function pointer and gen_new is the boolean, eg. 337# We have exhausted all lookups, let's create if we can 338 if gen_new: 339 path = path_create() 340 self._lookup_add(None, path, lvm_id, uuid) I will double check all the places get_object_path_by_uuid_lvm_id it's being called and if it looks good, I'm going to remove gen_new and just use the fact that if 'path_create' is not None that it's OK to create a new object path. Thanks for pointing this out! Need to correct as the '[unknown]' device path may take different forms. Need to use the missing field on the PV |