[libvirt] RFC [1/3]: The internal lock manager API

Eric Blake eblake at redhat.com
Fri Sep 10 19:50:56 UTC 2010


On 09/10/2010 10:00 AM, Daniel P. Berrange wrote:
> /**
>   * virLockManagerSetParameter:
>   * @manager: the lock manager context
>   * @key: the parameter name
>   * @value: the parameter value
>   *
>   * Set a configuration parameter for the managed process.
>   * A process of VIR_LOCK_MANAGER_START_DOMAIN will be
>   * given at least 3 parameters:
>   *
>   * - id: the domain unique id
>   * - uuid: the domain uuid
>   * - name: the domain name
>   *
>   * There may be other parameters specific to the lock manager
>   * plugin that are provided for the managed process
>   *
>   * This should only be called prior to the supervised process
>   * being started. Setting parameters may change the set of
>   * argv returned by virLockManagerGetSupervisorArgs.

Returns 0 on success, -1 on failure?  I'm guessing this is general usage 
throughout this file, but should it be mentioned per function, or just 
once up front?

> /**
>   * virLockManagerRegisterResource:
>   * @manager: the lock manager context
>   * @type: the resource type virLockManagerResourceType
>   * @name: the resource name
>   * @flags: the resource access flags
>   *
>   * Register a resource that is required when the process
>   * starts up. This may only be called prior to the process
>   * being started. The format of @name varies according to
>   * the resource @type. A VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK
>   * will have a fully qualified file path.
>   *
>   * If no flags are given, the resource is assumed to be
>   * used in exclusive, read-write mode. Access can be
>   * relaxed to readonly, or shared read-write.

Returns 0 on success, -1 on failure?

> /**
>   * virLockManagerAcquireResource:
>   * @manager: the lock manager context
>   * @type: the resource type virLockManagerResourceType
>   * @name: the resource name
>   * @flags: the resource access flags
>   *
>   * Dynamically acquire a resource for a running process.
>   * This may only be called once the process has been
>   * started. The format of @name varies according to
>   * the resource @type. A VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK
>   * will have a fully qualified file path.
>   *
>   * If no flags are given, the resource is assumed to be
>   * used in exclusive, read-write mode. Access can be
>   * relaxed to readonly, or shared read-write.

Does this guarantee that lock is not obtained on failure?  Should flags 
include VIR_LOCK_ACQUIRE_PROBE, which then allows the choice between 
blocking to wait for the lock (flags==0) or an immediate return of -2 if 
the lock is already owned by another process (flags==1)?

> /**
>   * virLockManagerReleaseResource:
>   * @manager: the lock manager context
>   * @type: the resource type virLockManagerResourceType
>   * @name: the resource name
>   * @flags: the resource access flags
>   *
>   * Dynamically release a resource for a running process.
>   * This may only be called after the process has been
>   * started. The format of @name varies according to
>   * the resource @type. A VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK
>   * will have a fully qualified file path.
>   *
>   * If no flags are given, the resource is assumed to be
>   * used in exclusive, read-write mode. Access can be
>   * relaxed to readonly, or shared read-write.

If this fails, is the resource state indeterminate, or is it still 
guaranteed to be locked?

> /**
>   * virLockManagerPrepareMigrate:
>   * @manager: the lock manager context
>   * @targetURI: destination of the migration
>   *
>   * Notify the supevisor that the process is about to be migrated

s/supevisor/supervisor/

> /**
>   * virLockManager:
>   * @manager: the lock manager context
>   *
>   * Inform the supervisor that the supervised process has
>   * been, or can be stopped.

Does this automatically release any locks held by the manager, or fail 
if the manager still owns locks?

> /**
>   * virLockManager:
>   * @manager: the lock manager context
>   *
>   * Release resources. If the supervised process is still
>   * running, it will be killed with prejudice

Does this first attempt to automatically release any locks held by the 
manager?

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




More information about the libvir-list mailing list