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 > CentOS > CentOS

 
 
LinkBack Thread Tools
 
Old 04-15-2010, 08:39 AM
Hans de Goede
 
Default Ensure proper disklabel type on boot disk if CLEARPART_TYPE_ALL. (#570483, #530225)

Hi,

On 04/15/2010 04:05 AM, David Lehman wrote:

If the user specified "clearpart --all" or chose "Use All Space",
make sure that the boot disk gets initialized with a disklabel
whose type is appropriate for the platform's bootloader.
---
storage/partitioning.py | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/storage/partitioning.py b/storage/partitioning.py
index 719e21f..20d7694 100644
--- a/storage/partitioning.py
+++ b/storage/partitioning.py
@@ -373,6 +373,45 @@ def clearPartitions(storage):
# now remove any empty extended partitions
removeEmptyExtendedPartitions(storage)

+ _platform = storage.anaconda.platform
+
+ # make sure that the the boot device has the correct disklabel type if
+ # we're going to completely clear it.
+ for disk in storage.partitioned:
+ if not storage.anaconda.bootloader.drivelist:
+ break
+
+ if disk.name != storage.anaconda.bootloader.drivelist[0]:
+ continue
+
+ if storage.clearPartType != CLEARPART_TYPE_ALL or
+ (storage.clearPartDisks and disk.name not in storage.clearPartDisks):
+ continue
+
+ # don't reinitialize the disklabel if the disk contains install media
+ if filter(lambda p: p.dependsOn(disk), storage.protectedDevices):
+ continue
+
+ nativeLabelType = _platform.diskLabelType(disk.partedDevice.type)
+ if disk.format.labelType == nativeLabelType:
+ continue
+
+ if part.disk.format.labelType == "mac":


part.disk.format.labelType should be disk.format.labelType


+ # remove the magic apple partition
+ for part in storage.partitions:
+ if part.disk == disk:
+ log.debug("clearing %s" % part.name)
+ # We can't schedule the apple map partition for removal
+ # because parted will not allow us to remove it from the
+ # disk. Still, we need it out of the devicetree.
+ storage.devicetree._removeDevice(part, moddisk=False)


You're removing all partitions on the disk from the tree here, granted
there shouldn't be any left other then the magic apple one, but maybe
add a additional check ?


+
+ destroy_action = ActionDestroyFormat(disk)
+ newLabel = getFormat("disklabel", device=disk.path)
+ create_action = ActionCreateFormat(disk, format=newLabel)
+ storage.devicetree.registerAction(destroy_action)
+ storage.devicetree.registerAction(create_action)
+
def removeEmptyExtendedPartitions(storage):
for disk in storage.partitioned:
log.debug("checking whether disk %s has an empty extended" % disk.name)


Other then the 2 above remarks, ack.

Regards,

Hans

_______________________________________________
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 11:48 AM.

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