Re: [PATCH 3/3] Ensure proper disklabel type on boot disk if CLEARPART_TYPE_ALL. (#570483, #530225)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2010-04-15 at 10:39 +0200, Hans de Goede wrote:
> 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

Wow, I must have gotten lucky when I tested with a mac disklabel. Fixed
in my local tree.

> 
> > +            # 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 ?

I was hesitant to do this, but we don't want to cover up other problems
so I've added a check that it's partition number 1 into that test.

Dave

> 
> > +
> > +        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@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/anaconda-devel-list


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

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux