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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions