cc_resizefs does not allocate space on all disks of a multi disk btrfs volume

Bug #1955858 reported by Richard Schwab
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Expired
Medium
Unassigned

Bug Description

cloud provider: self-hosted, proxmox

cloud-init config:
growpart:
  mode: auto
  devices:
    - /dev/sda1
    - /dev/sdb1
    - /dev/sdc1
    - /dev/sdd1

I have a multi disk btrfs volume as root fs for the vm.
Each disk needs to grow on first boot and the btrfs filesystem should be resized.
Partitions are grown just fine and btrfs detects that, however, running `btrfs filesystem resize max /` as currently used in https://github.com/canonical/cloud-init/blob/bae9b11da9ed7dd0b16fe5adeaf4774b7cc628cf/cloudinit/config/cc_resizefs.py#L81 does not account for having multiple disks.

From the `btrfs-filesystem` man page (debian 11, Btrfs v5.10.1):
> The devid can be found in the output of btrfs filesystem show and defaults to 1 if not specified.

Since a devid is not passed only the first disk will be resized, other disks will stay with "slack" space.

This is after I manually resized disk id 2 for testing, before it also had 3GiB slack:

root@test-vm:~# btrfs device usage /
/dev/sda1, ID: 1
   Device size: 4.00GiB
   Device slack: 3.50KiB
   Data,RAID10: 310.25MiB
   Metadata,RAID10: 64.00MiB
   System,RAID10: 8.00MiB
   Unallocated: 3.62GiB

/dev/sdb1, ID: 2
   Device size: 4.00GiB
   Device slack: 3.50KiB
   Data,RAID10: 310.25MiB
   Metadata,RAID10: 64.00MiB
   System,RAID10: 8.00MiB
   Unallocated: 3.62GiB

/dev/sdc1, ID: 3
   Device size: 4.00GiB
   Device slack: 3.00GiB
   Data,RAID10: 310.25MiB
   Metadata,RAID10: 64.00MiB
   System,RAID10: 8.00MiB
   Unallocated: 640.73MiB

/dev/sdd1, ID: 4
   Device size: 4.00GiB
   Device slack: 3.00GiB
   Data,RAID10: 310.25MiB
   Metadata,RAID10: 64.00MiB
   System,RAID10: 8.00MiB
   Unallocated: 640.73MiB

Revision history for this message
Richard Schwab (nothing4you) wrote :
description: updated
Revision history for this message
James Falcon (falcojr) wrote :

Thank you for the detailed report. This is a use case we should support.

Changed in cloud-init:
status: New → Triaged
importance: Undecided → Medium
Revision history for this message
James Falcon (falcojr) wrote :
Changed in cloud-init:
status: Triaged → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.