Bug 1075671
Summary: | Disk information not completely restored when actions are canceled | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Bruno Goncalves <bgoncalv> | ||||||||||||||||||||||||||||||||||||||||||
Component: | python-blivet | Assignee: | David Lehman <dlehman> | ||||||||||||||||||||||||||||||||||||||||||
Status: | CLOSED ERRATA | QA Contact: | Release Test Team <release-test-team-automation> | ||||||||||||||||||||||||||||||||||||||||||
Severity: | medium | Docs Contact: | |||||||||||||||||||||||||||||||||||||||||||
Priority: | medium | ||||||||||||||||||||||||||||||||||||||||||||
Version: | 7.0 | CC: | amulhern, bugproxy, hannsj_uhl, jstodola, lmacken, lsoft-tool-inc, mbanas, mflitter, pchavan, sgaikwad, yanwang | ||||||||||||||||||||||||||||||||||||||||||
Target Milestone: | rc | Keywords: | Reopened, Triaged | ||||||||||||||||||||||||||||||||||||||||||
Target Release: | --- | ||||||||||||||||||||||||||||||||||||||||||||
Hardware: | x86_64 | ||||||||||||||||||||||||||||||||||||||||||||
OS: | Unspecified | ||||||||||||||||||||||||||||||||||||||||||||
Whiteboard: | abrt_hash:6855424faae8561a871ffae9ac59c76322f87e9467bca5fe0e0e76efa71ebc7c | ||||||||||||||||||||||||||||||||||||||||||||
Fixed In Version: | python-blivet-0.61.0.5-1 | Doc Type: | Known Issue | ||||||||||||||||||||||||||||||||||||||||||
Doc Text: |
If the system is installed from a removable medium, and an install or storage option is selected but then changed, the installation fails. Consequently, it is not possible to reconsider decisions made during the installation process. To work around this problem, avoid accepting and then changing storage decisions if using removable install media.
|
Story Points: | --- | ||||||||||||||||||||||||||||||||||||||||||
Clone Of: | Environment: | ||||||||||||||||||||||||||||||||||||||||||||
Last Closed: | 2015-03-05 14:06:07 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: | |||||||||||||||||||||||||||||||||||||||||||||
Bug Depends On: | |||||||||||||||||||||||||||||||||||||||||||||
Bug Blocks: | 782468, 807834, 829185, 1028479, 1064025, 1085201, 1113519 | ||||||||||||||||||||||||||||||||||||||||||||
Attachments: |
|
Description
Bruno Goncalves
2014-03-12 14:52:41 UTC
Created attachment 873620 [details]
File: anaconda-tb
Created attachment 873621 [details]
File: anaconda.log
Created attachment 873622 [details]
File: environ
Created attachment 873623 [details]
File: ks.cfg
Created attachment 873624 [details]
File: lsblk_output
Created attachment 873625 [details]
File: nmcli_dev_list
Created attachment 873626 [details]
File: os_info
Created attachment 873627 [details]
File: program.log
Created attachment 873628 [details]
File: storage.log
Created attachment 873629 [details]
File: syslog
Created attachment 873630 [details]
File: ifcfg.log
Created attachment 873631 [details]
File: packaging.log
*** Bug 1075541 has been marked as a duplicate of this bug. *** Stack trace is identical and it looks like it originates from same cause. *** This bug has been marked as a duplicate of bug 1074094 *** *** Bug 1074094 has been marked as a duplicate of this bug. *** OK. I've found a way to make it happen a little bit more directly. Boot with existing LVM install on two disks, and a third empty disk. 1. Go to Installation Destination, select all disks, and "I will configure partitioning", press Done 2) In Manual Partitioning, remove swap partition in RHEL7 install, using - (do not delete everything on RHEL7 install) and press Done. This nets you a 'Destroy Device' action for the lvmlv /swap. 3) Go back to Installation Destination, unselect second disk, choose "I will configure partitioning" and press Done. In my case, swap partition reappeared, that is not wrong. 4) In Manual Partitioning, press Done and Accept Changes. There will not be a Device Destroy action this time. 5) Choose Installation Destination, and "I will configure partitioning" and press Done. 6) In Manual Partitioning, remove /swap as before with - (do not delete everything)...traceback. Actually, this is enough: 1. Go to Installation Destination, select all disks, and "I will configure partitioning", press Done 2) In Manual Partitioning, remove swap partition in RHEL7 install, using - (do not delete everything on RHEL7 install) and press Done. This nets you a 'Destroy Device' action for the lvmlv /swap. 3) Go back to Installation Destination, unselect second disk, choose "I will configure partitioning" and press Done. In my case, swap partition reappeared, that is not wrong. 4) In Manual Partitioning, remove swap partition again using the -. Traceback! Created attachment 875628 [details]
Screenshot of stack trace showing same error, albeit different trace
Created attachment 875677 [details]
Patch that failed
With this patch, the original bug is fixed, but it is possible to engineer a situation where hide finds itself calling _removeDevice on a non-leaf device. This can occur through some combination of deleting mountpoints in existing installs and adding and removing devices.
Created attachment 875696 [details]
anaconda.log snap 9
default comment by bridge
Created attachment 875697 [details]
anaconda traceback (/tmp/anaconda-tb-*) snap 9
default comment by bridge
Created attachment 875698 [details]
Shown space at first enter
default comment by bridge
Created attachment 875699 [details]
Shown space when reenter installation destination
default comment by bridge
Created attachment 875700 [details]
anaconda.log snap 10
default comment by bridge
Created attachment 875701 [details]
anaconda traceback (/tmp/anaconda-tb-*) snap 10
default comment by bridge
The problem here is that we find ourselves removing an LVMVolumeGroupDevice that has -2 kids. This makes it a non-leaf device, so error. DeviceTree.getChildren(device) == [], so this device is a leaf device, it's just that the kid count is now off. The problem is that when we remove a device we decrement its parents child count and when we add a device we do not do the corresponding operation. My plan would be to use devicetree to figure out whether a device actually has children and use leaf just to record leafy properties of the device itself. A PartitionDevice requires more than just having no chidren to be a leaf. *** Bug 1080409 has been marked as a duplicate of this bug. *** Note that the error manifests somewhat differently in bz#1080409 so it's worth a look. *** Bug 1084213 has been marked as a duplicate of this bug. *** Note that bz#1084213 manifests due to the hiding of install media. It is possible that the type of install media (which is somehwat related to the reason for hiding it) should be taken into account in devicetree.hide(). When it comes to hiding install media, canceling actions seems like overkill and could be frustrating to the user, who has not taken any action to cause this to happen. *** Bug 1089180 has been marked as a duplicate of this bug. *** *** Bug 1098619 has been marked as a duplicate of this bug. *** (In reply to mulhern from comment #18) > Actually, this is enough: > > 1. Go to Installation Destination, select all disks, and "I will configure > partitioning", press Done > 2) In Manual Partitioning, remove swap partition in RHEL7 install, using - > (do not delete everything on RHEL7 install) and press Done. This nets you a > 'Destroy Device' action for the lvmlv /swap. > 3) Go back to Installation Destination, unselect second disk, choose "I will > configure partitioning" and press Done. In my case, swap partition > reappeared, that is not wrong. It is wrong. Since you've just hidden sdb all lvm that uses that disk should be hidden as well, but apparently it is not. It's because we cancel the actions after traversing the tree instead of beforehand. That means that we could be hiding devices that would be removed by the cancellations and then putting devices into the tree that should be hidden (by canceling destroy actions). I have a fix for this in my working tree, but wanted to note it here for posterity. > 4) In Manual Partitioning, remove swap partition again using the -. > Traceback! Retested with python-blivet-0.61.0.22-1.el7, using steps from comment 18. After unselecting second disk and returning to the custom partitioning spoke, anaconda no longer shows logical volumes from incomplete VG, which is expected. After removing PV and other existing partitions from the disk, it is possible to create new partitions and finish the installation. Moving to VERIFIED. 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://rhn.redhat.com/errata/RHBA-2015-0313.html |