diff --git a/cloudinit/config/cc_disk_setup.py b/cloudinit/config/cc_disk_setup.py index 0b324696896..2c03d920e32 100644 --- a/cloudinit/config/cc_disk_setup.py +++ b/cloudinit/config/cc_disk_setup.py @@ -10,6 +10,7 @@ import logging import os import shlex +from pathlib import Path from textwrap import dedent from cloudinit import subp, util @@ -908,7 +909,15 @@ def mkfs(fs_cfg): if not partition or partition.isdigit(): # Handle manual definition of partition if partition.isdigit(): + # nvme support + # https://github.com/torvalds/linux/blob/45db3ab/block/partitions + # /core.c#L330 + if device[-1].isdigit(): + device = f"{device}p" device = "%s%s" % (device, partition) + if not Path(device).is_block_device(): + LOG.warning("Path %s does not exist or is not a block device") + return LOG.debug( "Manual request of partition %s for %s", partition, device )