Ideally, we should use names like nvme0n1, which follow the typical naming convention for NVMe devices (even if they don't necessarily match the actual device names inside the guest). However, using this approach in libvirt would tightly couple the device name with the controller relationship, meaning we'd need to handle the corresponding logic. If we can implement that logic, it would be the best outcome, allowing us to adopt the more familiar and user-friendly nvme0n1 style.
On the other hand, if we’re okay with using names that don't match the usual convention (nvme0n1), then I think nvme is a more appropriate and concise naming choice. This approach would simplify the handling logic. I think we can evaluate the complexity of implementing the nvme0n1 format. If the scope of changes is acceptable, adopting this format would be more user-friendly.