qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]