[libvirt] [PATCH] util: make use of VIR_LOCK_SPACE_ACQUIRE_AUTOCREATE in virLockSpaceAcquireResource
Shanzhi Yu
shyu at redhat.com
Thu Feb 12 14:23:15 UTC 2015
On 02/12/2015 07:17 PM, Daniel P. Berrange wrote:
> On Thu, Feb 12, 2015 at 07:12:57PM +0800, Shanzhi Yu wrote:
>> When create external disk snapshot with virtlock enabled, libvirtd
>> will hang if flag VIR_LOCK_SPACE_ACQUIRE_AUTOCREATE is missed in
>> virLockSpaceAcquireResource.
>>
>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1191901
>> Signed-off-by: Shanzhi Yu <shyu at redhat.com>
>> ---
>> src/util/virlockspace.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
>> index 2366a74..25b4433 100644
>> --- a/src/util/virlockspace.c
>> +++ b/src/util/virlockspace.c
>> @@ -626,8 +626,10 @@ int virLockSpaceAcquireResource(virLockSpacePtr lockspace,
>> virMutexLock(&lockspace->lock);
>>
>> if ((res = virHashLookup(lockspace->resources, resname))) {
>> - if ((res->flags & VIR_LOCK_SPACE_ACQUIRE_SHARED) &&
>> - (flags & VIR_LOCK_SPACE_ACQUIRE_SHARED)) {
>> + if (((res->flags & VIR_LOCK_SPACE_ACQUIRE_SHARED) &&
>> + (flags & VIR_LOCK_SPACE_ACQUIRE_SHARED)) ||
>> + ((res->flags & VIR_LOCK_SPACE_ACQUIRE_AUTOCREATE) &&
>> + (flags & VIR_LOCK_SPACE_ACQUIRE_AUTOCREATE))){
> No, this is wrong. If virHashLookup returns a non-NULL entry it
> indicates that the lock is already held. It is not valid to
> ignore this error if 'autocreate' flag is set, as that would allow
> multiple VMs to own the same disk which is exactly the scenario we
> are trying to prevent.
Yes. It's really wrong way. Please ignore this.
>
> Regards,
> Daniel
--
Regards
shyu
More information about the libvir-list
mailing list