diff --git a/internal/disk/partition_table.go b/internal/disk/partition_table.go index d18f665f9..5db4a89f7 100644 --- a/internal/disk/partition_table.go +++ b/internal/disk/partition_table.go @@ -21,7 +21,7 @@ type PartitionTable struct { func NewPartitionTable(basePT *PartitionTable, mountpoints []blueprint.FilesystemCustomization, imageSize uint64, rng *rand.Rand) (*PartitionTable, error) { newPT := basePT.Clone().(*PartitionTable) for _, mnt := range mountpoints { - size := newPT.AlignUp(mnt.MinSize) + size := newPT.AlignUp(clampFSSize(mnt.Mountpoint, mnt.MinSize)) if path := entityPath(newPT, mnt.Mountpoint); len(path) != 0 { resizeEntityBranch(path, size) } else { @@ -419,6 +419,21 @@ func (pt *PartitionTable) FindMountable(mountpoint string) Mountable { return path[0].(Mountable) } +func clampFSSize(mountpoint string, size uint64) uint64 { + // set a minimum size of 1GB for all mountpoints + var minSize uint64 = 1073741824 + if mountpoint == "/usr" { + // set a minimum size of 2GB for `/usr` mountpoint + // since this is current behaviour and the minimum + // required to create a bootable image + minSize = 2147483648 + } + if minSize > size { + return minSize + } + return size +} + func resizeEntityBranch(path []Entity, size uint64) { if len(path) == 0 { return diff --git a/internal/distro/rhel85/distro.go b/internal/distro/rhel85/distro.go index faa90a421..9c65fc77b 100644 --- a/internal/distro/rhel85/distro.go +++ b/internal/distro/rhel85/distro.go @@ -466,9 +466,6 @@ func (t *imageType) checkOptions(customizations *blueprint.Customizations, optio invalidMountpoints := []string{} for _, m := range mountpoints { - if m.Mountpoint == "/usr" && m.MinSize < 2147483648 { - m.MinSize = 2147483648 - } if !isMountpointAllowed(m.Mountpoint) { invalidMountpoints = append(invalidMountpoints, m.Mountpoint) } diff --git a/internal/distro/rhel86/distro.go b/internal/distro/rhel86/distro.go index 4a87183d3..74bdd89dd 100644 --- a/internal/distro/rhel86/distro.go +++ b/internal/distro/rhel86/distro.go @@ -549,9 +549,6 @@ func (t *imageType) checkOptions(customizations *blueprint.Customizations, optio invalidMountpoints := []string{} for _, m := range mountpoints { - if m.Mountpoint == "/usr" && m.MinSize < 2147483648 { - m.MinSize = 2147483648 - } if !isMountpointAllowed(m.Mountpoint) { invalidMountpoints = append(invalidMountpoints, m.Mountpoint) } diff --git a/internal/distro/rhel90/distro.go b/internal/distro/rhel90/distro.go index 5588681ff..6c879d186 100644 --- a/internal/distro/rhel90/distro.go +++ b/internal/distro/rhel90/distro.go @@ -537,9 +537,6 @@ func (t *imageType) checkOptions(customizations *blueprint.Customizations, optio invalidMountpoints := []string{} for _, m := range mountpoints { - if m.Mountpoint == "/usr" && m.MinSize < 2147483648 { - m.MinSize = 2147483648 - } if !isMountpointAllowed(m.Mountpoint) { invalidMountpoints = append(invalidMountpoints, m.Mountpoint) } diff --git a/internal/distro/rhel90beta/distro.go b/internal/distro/rhel90beta/distro.go index 794bf83d2..1c84aef42 100644 --- a/internal/distro/rhel90beta/distro.go +++ b/internal/distro/rhel90beta/distro.go @@ -492,9 +492,6 @@ func (t *imageType) checkOptions(customizations *blueprint.Customizations, optio invalidMountpoints := []string{} for _, m := range mountpoints { - if m.Mountpoint == "/usr" && m.MinSize < 2147483648 { - m.MinSize = 2147483648 - } if !isMountpointAllowed(m.Mountpoint) { invalidMountpoints = append(invalidMountpoints, m.Mountpoint) }