Re: [PATCH 3/5] Do not use getPartitionByPath() in allocatePartitions()

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

 



On Mon, 2009-04-06 at 17:42 +0200, Hans de Goede wrote:
> parted always renumbers partitions when a partition gets removed, so
> if we have p5 and p6, and then p5 gets removed then p6 becomes p5, if
> we then check for p6 using getPartitionByPath() it will show up as
> non existing even though it does exist, but it has been renamed to p5.
> 
> This patch fixes this by simply setting the PartitionDevice's pedPartition
> to None when it was removed from its disk, as the PartitionDevice is of no
> use to use after that anyways (and we already check that we do not try
> to remove None from the disk).

This one made me a little nervous, but that's because this area of the
code is too touchy. Perhaps your changes will help this.

> ---
>  storage/devices.py      |    7 +------
>  storage/partitioning.py |    4 ++--
>  2 files changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/storage/devices.py b/storage/devices.py
> index 209ea4f..6aa462c 100644
> --- a/storage/devices.py
> +++ b/storage/devices.py
> @@ -1011,10 +1011,6 @@ class PartitionDevice(StorageDevice):
>          return self.partType & parted.PARTITION_PROTECTED
>  
>      def _getPartedPartition(self):
> -        if self.disk and not self._partedPartition:
> -            pdisk = self.disk.partedDisk
> -            self._partedPartition = pdisk.getPartitionByPath(self.path)
> -
>          return self._partedPartition
>  
>      def _setPartedPartition(self, partition):
> @@ -1158,8 +1154,7 @@ class PartitionDevice(StorageDevice):
>          self.disk.addPartition(self)
>          self.disk.commit()
>  
> -        # this will force a lookup on next access, which we want
> -        self.partedPartition = None
> +        self.partedPartition = self.disk.partedDisk.getPartitionByPath(self.path)
>  
>          self.exists = True
>          self.setup()
> diff --git a/storage/partitioning.py b/storage/partitioning.py
> index d824fa6..0f741ec 100644
> --- a/storage/partitioning.py
> +++ b/storage/partitioning.py
> @@ -614,10 +614,10 @@ def allocatePartitions(disks, partitions):
>              #_part.disk.partedDisk.removePartition(_part.partedPartition)
>              partedDisk = partedDisks[_part.disk.partedDisk.device.path]
>              #log.debug("removing part %s (%s) from disk %s (%s)" % (_part.partedPartition.path, [p.path for p in _part.partedPartition.disk.partitions], partedDisk.device.path, [p.path for p in partedDisk.partitions]))
> -            if not partedDisk.getPartitionByPath(_part.path):
> -                continue
>  
>              partedDisk.removePartition(_part.partedPartition)
> +            _part.partedPartition = None
> +
>              # remove empty extended so it doesn't interfere
>              extended = partedDisk.getExtendedPartition()
>              if extended and not partedDisk.getLogicalPartitions():

_______________________________________________
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