[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] drive_add vs. pci_add
From: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] drive_add vs. pci_add |
Date: |
Thu, 25 Jun 2009 13:28:40 -0500 |
User-agent: |
Thunderbird 2.0.0.21 (X11/20090320) |
Paul Brook wrote:
On Thursday 25 June 2009, Avi Kivity wrote:
On 06/25/2009 09:46 AM, Jan Kiszka wrote:
Hi,
sorry, it's still early, but isn't the monitor command 'drive_add'
completely redundant to 'pci_add ... storage'? If yes, and drive_add is
only there for legacy users, I would mask its help from the monitor
interface to avoid confusion.
What we really want is pci_add storage to add a storage controller, and
drive_add to attach a drive to that controller. I don't think that's
what happens now.
Part of the problem is that we don't currently isolate configs for different
pats of the device stack. There are several different layers at which hotplug
can occur:
- Device - e.g. PCI hotplug. If done properly this shouldn't care whether
you're adding a NIC, VGA, SCSI HBA, or whatever.
- Drive - Adding/removing drives to an existing HBA.
- Media - e.g. changing the contents of a CDROM drive.
Also, we probably want to separate the definition of storage from the
act of connecting the storage via hotplug. If I were going to add new
monitor commands today, I may do something like:
# Create a new BlockDriverState with a symbolic name of 'Foo'
(qemu) storage_add Foo file=/path/to/image,snapshot=on
# Create a new pci device with a symbolic name of 'Bar'
(qemu) pci_create dev=virtio-blk,name=Bar
# Connect the storage backend Foo to the storage frontend Bar
(qemu) storage_connect Foo Bar
# Attach PCI device via hotplug
(qemu) pci_hotplug Bar addr=0.01.0
Beyond pci_hotplug, you could also introduce pci_insert/remove
commands. This could be used if starting a guest in the stopped state
to insert a PCI card or in combination with -no-shutdown.
For attaching SCSI disks, you would probably introduce something like:
# Create a new scsi-disk named Bar
(qemu) scsi_create_lun target=0,lun=1,name=Bar
# Connect Foo storage backend to Bar storage frontend
(qemu) storage_connect Foo Bar
# Attach lun 'Bar' to existing SCSI controller named 'Controller'
(qemu) scsi_attach_lun Bar Controller
Regards,
Anthony Liguori