Skip to content

Cloud-init fails to partition and empty disk with sfdisk when the type is gpt #6682

@ijankula

Description

@ijankula

Bug report

When using RHEL10 as base image, only sfdisk is available and it fails to partition and empty disk when the table type is GPT.

during cc_disk_setup, this command is run:

subp.py[DEBUG]: Running command ['sfdisk', '-l', '-J', '/dev/vdb'] with allowed return codes [0] (shell=False, capture=True)

However on an empty disk, the exit code is 1:

Error running partition command on /dev/vdb
Unexpected error while running command.
Command: ['sfdisk', '-l', '-J', '/dev/vdb']
Exit code: 1
Reason: -
Stdout:
Stderr: sfdisk: /dev/vdb: does not contain a recognized partition table
2026-01-22 13:21:13,952 - log_util.py[DEBUG]: Failed partitioning operation

Steps to reproduce the problem

Cloud-init disk setup configured as:

disk_setup:
/dev/vdb:
table_type: 'gpt'
layout: True
overwrite: true

Environment details

  • Cloud-init version: 24.4-6.el10
  • Operating System Distribution: RHEL 10.1
  • Cloud provider, platform or installer type: OCP

cloud-init logs

2026-01-19 13:20:47,582 - cc_disk_setup.py[DEBUG]: Partitioning disks: {'/dev/vdb': {'layout': True, 'overwrite': True, 'table_type': 'gpt'}}
2026-01-19 13:20:47,582 - subp.py[DEBUG]: Running command ['udevadm', 'settle'] with allowed return codes [0] (shell=False, capture=True)
2026-01-19 13:20:47,590 - cc_disk_setup.py[DEBUG]: Checking values for /dev/vdb definition
2026-01-19 13:20:47,590 - cc_disk_setup.py[DEBUG]: Checking against default devices
2026-01-19 13:20:47,591 - cc_disk_setup.py[DEBUG]: Checking if device /dev/vdb is a valid device
2026-01-19 13:20:47,591 - subp.py[DEBUG]: Running command ['lsblk', '--pairs', '--output', 'NAME,TYPE,FSTYPE,LABEL', '/dev/vdb', '--nodeps'] with allowed return codes [0] (shell=False, capture=True)
2026-01-19 13:20:47,594 - cc_disk_setup.py[DEBUG]: Checking if device layout matches
2026-01-19 13:20:47,594 - subp.py[DEBUG]: Running command ['sfdisk', '-l', '-J', '/dev/vdb'] with allowed return codes [0] (shell=False, capture=True)
2026-01-19 13:20:47,604 - performance.py[DEBUG]: Creating partition on /dev/vdb took 0.022 seconds
2026-01-19 13:20:47,604 - log_util.py[WARNING]: Failed partitioning operation
Error running partition command on /dev/vdb
Unexpected error while running command.
Command: ['sfdisk', '-l', '-J', '/dev/vdb']
Exit code: 1
Reason: -
Stdout:
Stderr: sfdisk: /dev/vdb: does not contain a recognized partition table
2026-01-19 13:20:47,604 - log_util.py[DEBUG]: Failed partitioning operation
Error running partition command on /dev/vdb
Unexpected error while running command.
Command: ['sfdisk', '-l', '-J', '/dev/vdb']
Exit code: 1
Reason: -
Stdout:
Stderr: sfdisk: /dev/vdb: does not contain a recognized partition table
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/cloudinit/config/cc_disk_setup.py", line 779, in check_partition_gpt_layout
out, _err = subp.subp(prt_cmd, update_env=LANG_C_ENV)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/cloudinit/subp.py", line 291, in subp
raise ProcessExecutionError(
cloudinit.subp.ProcessExecutionError: Unexpected error while running command.
Command: ['sfdisk', '-l', '-J', '/dev/vdb']
Exit code: 1
Reason: -
Stdout:
Stderr: sfdisk: /dev/vdb: does not contain a recognized partition table

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/cloudinit/config/cc_disk_setup.py", line 58, in handle
mkpart(disk, definition)
File "/usr/lib/python3.12/site-packages/cloudinit/config/cc_disk_setup.py", line 1103, in mkpart
if check_partition_layout(table_type, device, layout):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/cloudinit/config/cc_disk_setup.py", line 813, in check_partition_layout
found_layout = check_partition_gpt_layout(device, layout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/cloudinit/config/cc_disk_setup.py", line 787, in check_partition_gpt_layout
raise RuntimeError(
RuntimeError: Error running partition command on /dev/vdb
Unexpected error while running command.
Command: ['sfdisk', '-l', '-J', '/dev/vdb']
Exit code: 1
Reason: -
Stdout:
Stderr: sfdisk: /dev/vdb: does not contain a recognized partition table

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working correctly

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions