
On 01/30/2014 06:06 PM, Adam Walters wrote:
On Thu, Jan 30, 2014 at 9:46 AM, Ján Tomko <jtomko@redhat.com <mailto:jtomko@redhat.com>> wrote:
On 01/23/2014 08:45 PM, Adam Walters wrote: > This patch adds a helper function, qemuAddRBDPoolSourceHost, and > implements the usage of this function to allow RBD storage pools in QEMU > domain XML. > > The new function grabs RBD monitor hosts from the storage pool > definition and applies them to the domain's disk definition at runtime. > This function is used by my modifications to qemuTranslateDiskSourcePool > similar to the function used by the iSCSI code. > > My modifications to qemuTranslateDiskSourcePool is based heavily on the > existing iSCSI code, but modified to support RBD install. It will place > all relevant information into the domain's disk definition at runtime to > allow access to a RBD storage pool. > > Signed-off-by: Adam Walters <adam@pandorasboxen.com <mailto:adam@pandorasboxen.com>> > --- > src/qemu/qemu_conf.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 61 insertions(+), 1 deletion(-) > > diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c > index ac53f6d..b1a6bfe 100644 > --- a/src/qemu/qemu_conf.c > +++ b/src/qemu/qemu_conf.c > @@ -1439,8 +1478,29 @@ qemuTranslateDiskSourcePool(virConnectPtr conn, > } > break; > > - case VIR_STORAGE_POOL_MPATH: > case VIR_STORAGE_POOL_RBD: > + if (def->startupPolicy) { > + virReportError(VIR_ERR_XML_ERROR, "%s", > + _("'startupPolicy' is only valid for " > + "'file' file volume")); > + goto cleanup; > + }
You should also check if srcpool->mode is DIRECT and document that it's valid for rbd pools in docs/formatdomain.html.in <http://formatdomain.html.in> in the description of the mode attribute.
One of my early versions of this patch actually did check srcpool->mode (and set it to DIRECT if it wasn't set yet), but it was requested that I remove that check since there was only one mode for RBD pools.
Right, I didn't notice it was already checked above the switch: if (def->srcpool->mode && pooldef->type != VIR_STORAGE_POOL_ISCSI) { virReportError(VIR_ERR_XML_ERROR, "%s", _("disk source mode is only valid when " "storage pool is of iscsi type")); goto cleanup; }
The removal of that code is what prompted my modification to the secret type checking in another patch in this series. So which is the correct method of implementation? Should pools that only have one access mode check for srcpool->mode to be set (and set a default if there isn't a setting)?
If there is only one access mode, there is no need to specify it and no need for a check.
My original thoughts were that the check would allow for a HOST access mode in the future, which might allow use of the kernel rbd module (which creates block devices) while also knowing the volume was served by Ceph.
If that happens, we can allow MODE_DIRECT and MODE_HOST too, along with MODE_DEFAULT. Jan