[RHEL5] Skip disk label check for autopart all (#758881)
Vratislav Podzimek
vpodzime at redhat.com
Mon May 20 09:19:00 UTC 2013
On Fri, 2013-05-17 at 17:34 -0700, Brian C. Lane wrote:
> From: "Brian C. Lane" <bcl at redhat.com>
>
> When autopart all is selected and all partitions have been removed from
> a disk go ahead and apply the correct disk label. This fixed the problem
> of trying to autopart all on a gpt disk in a non-EFI system. Also add a
> few more lines to the logfile when relabeling the disk.
> ---
> autopart.py | 12 ++++++++++--
> partedUtils.py | 23 ++++++++++++++---------
> partitions.py | 2 +-
> 3 files changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/autopart.py b/autopart.py
> index b23f716..ff46eb1 100644
> --- a/autopart.py
> +++ b/autopart.py
> @@ -24,6 +24,7 @@ from anaconda_log import logger, logFile
> import cryptodev
> from partitioning import *
> import partedUtils
> +from partedUtils import needGPTLabel, getDefaultDiskType
> import partRequests
> from constants import *
> from partErrors import *
> @@ -1203,8 +1204,15 @@ def doClearPartAction(anaconda, partitions, diskset):
> partitions.removeRequest(old)
> partitions.addDelete(delete)
> deletePart(diskset, delete)
> - continue
> -
> +
> + if linuxOnly == 0 and disk.get_primary_partition_count() == 0:
> + # The disk is empty and we are clearing all partitions, so relabel it
> + dev = disk.dev
> + label = needGPTLabel(dev, getDefaultDiskType())
> + log.info("Disk %s is empty, creating new %s disklabel on it" % (drive, label.name))
> + new_disk = dev.disk_new_fresh(label)
> + diskset.disks[drive] = new_disk
> +
> def doAutoPartition(anaconda):
> instClass = anaconda.id.instClass
> diskset = anaconda.id.diskset
> diff --git a/partedUtils.py b/partedUtils.py
> index be66426..faef371 100644
> --- a/partedUtils.py
> +++ b/partedUtils.py
> @@ -279,23 +279,27 @@ archLabels = {'i386': ['msdos', 'gpt'],
> 'ppc': ['msdos', 'mac', 'amiga', 'gpt'],
> 'x86_64': ['msdos', 'gpt']}
>
> +def needGPTLabel(dev, label):
> + """ Return gpt label if disk is msdos and size is > 2GiB"""
> + if label.name == 'msdos' and \
> + dev.length > (2L**41) / dev.sector_size and \
> + 'gpt' in archLabels[rhpl.getArch()]:
> + label = parted.disk_type_get('gpt')
> + return label
> +
Is the size really in bytes? Wow. However, the docstring should say
2 TiB not 2 GiB. Otherwise this looks good to me.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic
More information about the anaconda-patches
mailing list