[libvirt] [PATCH v2 01/10] conf: Introduce readonly to hostdev and change helper function
Osier Yang
jyang at redhat.com
Wed Apr 3 03:37:41 UTC 2013
On 01/04/13 20:00, Han Cheng wrote:
> The only parameter in -drive affect scsi-generic is readonly. Introduce
> <readonly/> to <hostdev>.
> The helper function to look up disk controller model may be used by scsi
> hostdev. But it should be changed to use info.
>
> Signed-off-by: Han Cheng <hanc.fnst at cn.fujitsu.com>
> ---
> docs/formatdomain.html.in | 3 +++
> docs/schemas/domaincommon.rng | 5 +++++
> src/conf/domain_conf.c | 6 +++---
> src/conf/domain_conf.h | 6 ++++--
> src/libvirt_private.syms | 2 +-
> src/qemu/qemu_command.c | 4 ++--
> 6 files changed, 18 insertions(+), 8 deletions(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index cf382e8..a6bacfa 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -2257,6 +2257,9 @@
> <code>id</code> attribute that specifies the USB vendor and product id.
> The ids can be given in decimal, hexadecimal (starting with 0x) or
> octal (starting with 0) form.</dd>
> + <dt><code>readonly</code></dt>
> + <dd>Specifies that the device is readonly.
> + <span class="since">Since 0.13.0</span> for SCSI devices.</dd>
Except the wrong version pointed out by Hu Tao. How about:
<code>readonly</code>
<dd>Indicates the device is readonly, only valid for SCSI device.
<span class="since">Since 1.0.5</span>.
</dd>
> <dt><code>boot</code></dt>
> <dd>Specifies that the device is bootable. The <code>order</code>
> attribute determines the order in which devices will be tried during
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 8d7e6db..ccf0913 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -2911,6 +2911,11 @@
> <ref name="alias"/>
> </optional>
> <optional>
> + <element name='readonly'>
> + <empty/>
> + </element>
> + </optional>
> + <optional>
Since the "readonly" is only valid for SCSI device. This patch should be
either
merged into 3/10, or rebased after it. It should be grouped in
"hostdevsubsysscsi",
to make sure it's only valid for SCSI device when doing RNG validation.
> <ref name="deviceBoot"/>
> </optional>
> <optional>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index f3fca7f..d9d6b9f 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -3452,8 +3452,8 @@ error:
> }
>
> int
> -virDomainDiskFindControllerModel(virDomainDefPtr def,
> - virDomainDiskDefPtr disk,
> +virDomainDeviceFindControllerModel(virDomainDefPtr def,
> + virDomainDeviceInfoPtr info,
> int controllerType)
> {
> int model = -1;
> @@ -3461,7 +3461,7 @@ virDomainDiskFindControllerModel(virDomainDefPtr def,
>
> for (i = 0; i < def->ncontrollers; i++) {
> if (def->controllers[i]->type == controllerType &&
> - def->controllers[i]->idx == disk->info.addr.drive.controller)
> + def->controllers[i]->idx == info->addr.drive.controller)
> model = def->controllers[i]->model;
> }
>
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index edddf25..f8e3973 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -439,6 +439,8 @@ struct _virDomainHostdevDef {
> } source;
> virDomainHostdevOrigStates origstates;
> virDomainDeviceInfoPtr info; /* Guest address */
> + /* readonly is only used for scsi hostdev */
> + unsigned int readonly;
> };
>
> /* Two types of disk backends */
> @@ -1981,8 +1983,8 @@ void virDomainInputDefFree(virDomainInputDefPtr def);
> void virDomainDiskDefFree(virDomainDiskDefPtr def);
> void virDomainLeaseDefFree(virDomainLeaseDefPtr def);
> void virDomainDiskHostDefFree(virDomainDiskHostDefPtr def);
> -int virDomainDiskFindControllerModel(virDomainDefPtr def,
> - virDomainDiskDefPtr disk,
> +int virDomainDeviceFindControllerModel(virDomainDefPtr def,
> + virDomainDeviceInfoPtr info,
> int controllerType);
> virDomainDiskDefPtr virDomainDiskFindByBusAndDst(virDomainDefPtr def,
> int bus,
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 96eea0a..f2eefc3 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -128,6 +128,7 @@ virDomainDeviceAddressTypeToString;
> virDomainDeviceDefCopy;
> virDomainDeviceDefFree;
> virDomainDeviceDefParse;
> +virDomainDeviceFindControllerModel;
> virDomainDeviceInfoCopy;
> virDomainDeviceInfoIterate;
> virDomainDeviceTypeToString;
> @@ -145,7 +146,6 @@ virDomainDiskDeviceTypeToString;
> virDomainDiskErrorPolicyTypeFromString;
> virDomainDiskErrorPolicyTypeToString;
> virDomainDiskFindByBusAndDst;
> -virDomainDiskFindControllerModel;
> virDomainDiskGeometryTransTypeFromString;
> virDomainDiskGeometryTransTypeToString;
> virDomainDiskHostDefFree;
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index a0c278f..eac72c2 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -557,7 +557,7 @@ qemuAssignDeviceDiskAliasCustom(virDomainDefPtr def,
> if (disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) {
> if (disk->bus == VIR_DOMAIN_DISK_BUS_SCSI) {
> controllerModel =
> - virDomainDiskFindControllerModel(def, disk,
> + virDomainInfoFindControllerModel(def, &disk->info,
> VIR_DOMAIN_CONTROLLER_TYPE_SCSI);
>
> if ((qemuSetScsiControllerModel(def, qemuCaps, &controllerModel)) < 0)
> @@ -3179,7 +3179,7 @@ qemuBuildDriveDevStr(virDomainDefPtr def,
> }
>
> controllerModel =
> - virDomainDiskFindControllerModel(def, disk,
> + virDomainInfoFindControllerModel(def, &disk->info,
> VIR_DOMAIN_CONTROLLER_TYPE_SCSI);
> if ((qemuSetScsiControllerModel(def, qemuCaps, &controllerModel)) < 0)
> goto error;
More information about the libvir-list
mailing list