[libvirt] [PATCH 1/2] conf: Support for Block Device IO Limits

Eric Blake eblake at redhat.com
Fri Aug 31 18:26:44 UTC 2012


On 08/29/2012 08:48 AM, Viktor Mihajlovski wrote:
> Introducing a new iolimits element allowing to override certain
> properties of a guest block device like the physical and logical
> block size.
> This can be useful for platforms with 'non-standard' disk formats
> like S390 DASD with its 4K block size.
> 
> Signed-off-by: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
> ---
>  docs/formatdomain.html.in     |   18 +++++++++++++++
>  docs/schemas/domaincommon.rng |   17 ++++++++++++++
>  src/conf/domain_conf.c        |   49 +++++++++++++++++++++++++++++++++++++++++
>  src/conf/domain_conf.h        |    5 ++++
>  4 files changed, 89 insertions(+), 0 deletions(-)
> 

> +++ b/src/conf/domain_conf.c
> @@ -3398,6 +3398,8 @@ virDomainDiskDefParseXML(virCapsPtr caps,
>      char *authUUID = NULL;
>      char *usageType = NULL;
>      char *tray = NULL;
> +    char *logical_block_size = NULL;
> +    char *physical_block_size = NULL;
>  
>      if (VIR_ALLOC(def) < 0) {
>          virReportOOMError();
> @@ -3409,6 +3411,9 @@ virDomainDiskDefParseXML(virCapsPtr caps,
>      def->geometry.sectors = 0;
>      def->geometry.trans = VIR_DOMAIN_DISK_TRANS_DEFAULT;
>  
> +    def->iolimits.logical_block_size = 0;
> +    def->iolimits.physical_block_size = 0;

zero-initialization should be the default, but you are following
existing practice of explicit setting, so it doesn't hurt that much.

> +                physical_block_size =
> +                    virXMLPropString(cur, "physical_block_size");
> +                if (physical_block_size &&
> +                    virStrToLong_ui(physical_block_size, NULL, 0,
> +                                    &def->iolimits.physical_block_size) < 0) {
> +                    virReportError(VIR_ERR_INTERNAL_ERROR,
> +                                   _("invalid physical block size '%s'"),
> +                                   physical_block_size);

Should we be validating that the result is a power of 2, and at least
512?  But that's just icing to prevent stupidity; it's not a corner case
that I think any sane person would ever try to violate.

ACK once the 0.10.2 tweak is made in the docs.  If patch 2 is fine, I
will make the tweak and push, without needing a v2 from you.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 617 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120831/cb9b824b/attachment-0001.sig>


More information about the libvir-list mailing list