size_t i;
for (i = 0; i < def->ndisks; i++) {
+ g_autofree char *nvme_opts = NULL;
+
+ g_auto(virBuffer) opt = VIR_BUFFER_INITIALIZER;
virDomainDiskDef *disk = def->disks[i];
if (disk->bus != VIR_DOMAIN_DISK_BUS_NVME)
disk_source = virDomainDiskGetSource(disk);
+ if (disk->queues)
+ virBufferAsprintf(&opt, ",maxq=%d", disk->queues);
+ if (disk->queue_size)
+ virBufferAsprintf(&opt, ",qsz=%d", disk->queue_size);
+
+ nvme_opts = virBufferContentAndReset(&opt);
+
virCommandAddArg(cmd, "-s");
- virCommandAddArgFormat(cmd, "%d:0,nvme,%s",
+ virCommandAddArgFormat(cmd, "%d:0,nvme,%s%s",
controller->info.addr.pci.slot,
- disk_source);
+ disk_source,
+ NULLSTR_EMPTY(nvme_opts));
+
}
return 0;
</os>
<devices>
<disk type='file'>
- <driver name='file' type='raw'/>
+ <driver name='file' type='raw' queues='2' queue_size='256'/>
<source file='/tmp/freebsd.img'/>
<target dev='nvme0n1' bus='nvme'/>
</disk>
<on_crash>destroy</on_crash>
<devices>
<disk type='file' device='disk'>
- <driver name='file' type='raw'/>
+ <driver name='file' type='raw' queues='2' queue_size='256'/>
<source file='/tmp/freebsd.img'/>
<target dev='nvme0n1' bus='nvme'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>