FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Fedora Design Team

 
 
LinkBack Thread Tools
 
Old 12-15-2010, 08:01 PM
David Lehman
 
Default Add handling for cleanup of luks devices with unexpected map names.

---
pyanaconda/storage/devicetree.py | 34 ++++++++++++++++++++++++----------
1 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/pyanaconda/storage/devicetree.py b/pyanaconda/storage/devicetree.py
index 564e6e3..8cc61b9 100644
--- a/pyanaconda/storage/devicetree.py
+++ b/pyanaconda/storage/devicetree.py
@@ -626,10 +626,12 @@ class DeviceTree(object):
log.debug("failed to find dm node for %s" % dmdev.name)
continue

+ cleanup_luks = udev_device_is_dm_luks(info) and self._cleanup
+ slave_dev = None
+ slave_info = None
if device is None:
# we couldn't find it, so create it
# first, get a list of the slave devs and look them up
- slaves = []
dir = os.path.normpath("/sys/%s/slaves" % sysfs_path)
slave_names = os.listdir(dir)
for slave_name in slave_names:
@@ -639,27 +641,39 @@ class DeviceTree(object):
else:
dev_name = slave_name
slave_dev = self.getDeviceByName(dev_name)
- if slave_dev:
- slaves.append(slave_dev)
- else:
+ path = os.path.normpath("%s/%s" % (dir, slave_name))
+ new_info = udev_get_block_device(os.path.realpath(path)[4:])
+ if not slave_dev:
# we haven't scanned the slave yet, so do it now
- path = os.path.normpath("%s/%s" % (dir, slave_name))
- new_info = udev_get_block_device(os.path.realpath(path)[4:])
if new_info:
self.addUdevDevice(new_info)
- if self.getDeviceByName(dev_name) is None:
+ slave_dev = self.getDeviceByName(dev_name)
+ if slave_dev is None:
# if the current slave is still not in
# the tree, something has gone wrong
log.error("failure scanning device %s: could not add slave %s" % (name, dev_name))
return

+ if cleanup_luks:
+ slave_dev = slave_dev
+ slave_info = new_info
+
# try to get the device again now that we've got all the slaves
device = self.getDeviceByName(name)

if device is None and udev_device_is_dm_partition(info):
- diskname = udev_device_get_dm_partition_disk(info)
- disk = self.getDeviceByName(diskname)
- return self.addUdevPartitionDevice(info, disk=disk)
+ diskname = udev_device_get_dm_partition_disk(info)
+ disk = self.getDeviceByName(diskname)
+ return self.addUdevPartitionDevice(info, disk=disk)
+
+ # if this is a luks device whose map name is not what we expect,
+ # fix up the map name and see if that sorts us out
+ if device is None and cleanup_luks and slave_info and slave_dev:
+ slave_dev.format.mapName = name
+ self.handleUdevLUKSFormat(slave_info, slave_dev)
+
+ # try once more to get the device
+ device = self.getDeviceByName(name)

# if we get here, we found all of the slave devices and
# something must be wrong -- if all of the slaves are in
--
1.7.3.2

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 05:14 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org