On 06/21/2012 11:00 AM, Federico Simoncelli wrote:
On Thu, Jun 21, 2012 at 03:37:10PM +0100, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange(a)redhat.com>
>
> A sanlock lease can be marked as shared (rather
> than exclusive) using SANLK_RES_SHARED flag. This
> adds support for that flag and ensures that in auto
> disk mode, any shared disks use shared leases. This
> also makes any read-only disks be completely
> ignored.
>
> case VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK:
> if (driver->autoDiskLease) {
> - if (virLockManagerSanlockAddDisk(lock, name, nparams, params) < 0)
> + if (virLockManagerSanlockAddDisk(lock, name, nparams, params,
> + !!(flags &
VIR_LOCK_MANAGER_RESOURCE_SHARED)) < 0)
Just out of curiosity, you are using "!!" (both here and below) because
the compiler is complaining about the type?
Rather, it is a way of forcing a value to be 0 or 1 with the fewest
characters possible (since the line is already long); shorter than
constructs such as:
(bool)(flags & VIR_LOCK_MANAGER_RESOURCE_SHARED)
(flags & VIR_LOCK_MANAGER_RESOURCE_SHARED) != 0
But since virLockManagerSanlockAddDisk() declared its argument as bool,
and we already require a C99 compiler, the !! trick is strictly
unnecessary; C99 compilers already guarantee to implicitly convert any
non-zero value to true when doing argument conversion.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org