[libvirt] [PATCH 04/11] Support leases in guest XML and lock manager

Eric Blake eblake at redhat.com
Fri Jan 28 17:43:07 UTC 2011


On 01/24/2011 08:13 AM, Daniel P. Berrange wrote:
> A lock manager may operate in various modes. The direct mode of
> operation is to obtain locks based on the resources associated
> with devices in the XML. The indirect mode is where the app
> creating the domain provides explicit leases for each resource
> that needs to be locked. This XML extension allows for listing
> resources in the XML
> 
>   <leases>
>      <lease>
>        <key>thequickbrownfoxjumpsoverthelazydog</key>
>        <target path='/some/lease/path' offset='23432' length='256'/>
>      </lease>
>   </leases>
> 
> * docs/schemas/domain.rng: Add lease schema
> * src/conf/domain_conf.c, src/conf/domain_conf.h: parsing and
>   formatting for leases
> * tests/qemuxml2argvdata/qemuxml2argv-lease.args,
>   tests/qemuxml2argvdata/qemuxml2argv-lease.xml,
>   tests/qemuxml2xmltest.c: Test XML handling for leases
> ---
>  docs/schemas/domain.rng                        |   32 ++++++

docs/formatdomain.html.in

You can't escape writing docs, no matter how hard you try :)

>  
> +static void virDomainLeaseDefFree(virDomainLeaseDefPtr def)
> +{
> +    if (!def)
> +        return;

Add this to the free-like functions in cfg.mk.

>  static int
> +virDomainLeaseDefFormat(virBufferPtr buf,
> +                        virDomainLeaseDefPtr def)
> +{
> +    virBufferAddLit(buf, "    <lease>\n");
> +    virBufferEscapeString(buf, "      <key>%s</key>\n", def->key);
> +    virBufferEscapeString(buf, "      <target path='%s'", def->path);
> +    if (def->offset)
> +        virBufferVSprintf(buf, " offset='%llu'", def->offset);
> +    if (def->length)
> +        virBufferVSprintf(buf, " length='%llu'", def->length);
> +    virBufferAddLit(buf, "/>\n");
> +    virBufferAddLit(buf, "    </lease>\n");

The last two lines could be merged, but I'm not picky.

> +typedef virDomainLeaseDef *virDomainLeaseDefPtr;
> +struct _virDomainLeaseDef {
> +    char *key;
> +    char *path;
> +    unsigned long long offset;
> +    unsigned long long length;

Do we want to use off_t instead of unsigned long long?  Then again, I
don't think it matters that much in practice (for all practical porting
targets, ull is 64-bits, and gnulib pretty much guarantees that off_t is
64-bits).

I'd like to ACK this with the nits fixed, but should I really do that
without documentation?...

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

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


More information about the libvir-list mailing list