[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: PATCH: storage-branch: Maximize partitions after growing
- From: David Lehman <dlehman redhat com>
- To: Discussion of Development and Customization of the Red Hat Linux Installer <anaconda-devel-list redhat com>
- Subject: Re: PATCH: storage-branch: Maximize partitions after growing
- Date: Mon, 02 Mar 2009 10:52:13 -0600
On Mon, 2009-03-02 at 17:42 +0100, Hans de Goede wrote:
> In some cases the grow code would not use the entire disk, this patch fixes
> this (and removes this item from the TODO list)
Looks good -- thanks.
> ---
> storage/partitioning.py | 25 ++++++++++++++++++-------
> 1 files changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/storage/partitioning.py b/storage/partitioning.py
> index 77a101d..75ab085 100644
> --- a/storage/partitioning.py
> +++ b/storage/partitioning.py
> @@ -699,11 +699,6 @@ def growPartitions(disks, partitions):
> this fails, we begin a rough binary search with a maximum of three
> iterations to settle on a new size.
>
> - TODO: Call disk.maximizePartition for each growable partition that
> - has not been allocated its full share of the free space upon
> - termination of each disk's loop iteration. Any detected
> - maximum size can be specified via a parted Constraint.
> -
> Arguments:
>
> disks -- a list of all usable disks (DiskDevice instances)
> @@ -830,9 +825,25 @@ def growPartitions(disks, partitions):
> except PartitioningError, e:
> raise PartitioningError("failed to grow partitions")
>
> - # TODO: call disk.maximizePartition with max_size as the
> - # constraint, in case it can grab some more free space
> + # Maximize partitions, we do this after growing all partitions
> + # as some partitions may grow unlimited, and we don't want them
> + # eating up the entire disk when we still need to grow others
> + for part in growable:
> + constraint = parted.Constraint(device=disk.partedDisk.device)
> +
> + # don't grow beyond the request's maximum size
> + if part.req_max_size:
> + max_sect = (part.req_max_size * (1024 * 1024)) / sectorSize
> + if constraint.max_size > max_sect:
> + constraint.max_size = max_sect
> +
> + # don't grow beyond the resident filesystem's max size
> + if part.format.maxSize > 0:
> + max_sect = (part.format.maxSize * (1024 * 1024)) / sectorSize
> + if constraint.max_size > max_sect:
> + constraint.max_size = max_sect
>
> + disk.partedDisk.maximizePartition(part.partedPartition, constraint)
>
> # reset all requests to their original requested size
> for part in partitions:
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]