|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools/hotplug: fix locking
On 06/13/2012 04:11 AM, Ian Campbell wrote:
> On Mon, 2012-06-11 at 14:59 +0100, Zhigang Wang wrote:
>> This patch removes the ownner support and fixed this issue per my test.
> I think the changelog here needs to go into a bit more detail about why
> it is correct to remove the owner support. e.g. why is it no longer
> needed or why is it bogus. Also why does removing it fix the issue?
> Please describe the logic behind the change not just its impact on your
> test case.
Thanks Kouya for the info about Red Hat implement. I also like the flock
implement better.
My plan is to withdraw this patch and test Red Hat implement and if it works
fine, then I will submit the Red Hat patch (as far as it's GPL).
Thanks,
Zhigang
>
>> Kouya: would you please help to confirm this fix is correct?
>>
>> Anyone has encountered this issue please help to test.
>>
>> Signed-off-by: Zhigang Wang <zhigang.x.wang@xxxxxxxxxx>
>> Cc: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
>>
>> diff -r 32034d1914a6 -r eb72d7090b59 tools/hotplug/Linux/locking.sh
>> --- a/tools/hotplug/Linux/locking.sh Thu Jun 07 19:46:57 2012 +0100
>> +++ b/tools/hotplug/Linux/locking.sh Mon Jun 11 09:29:43 2012 -0400
>> @@ -48,32 +48,14 @@ sigerr() {
>> _claim_lock()
>> {
>> local lockdir="$1"
>> - local owner=$(_lock_owner "$lockdir")
>> local retries=0
>>
>> while [ $retries -lt $LOCK_RETRIES ]
>> do
>> - mkdir "$lockdir" 2>/dev/null && trap "_release_lock $lockdir; sigerr"
>> ERR &&
>> - _update_lock_info "$lockdir" && return
>> -
>> - local new_owner=$(_lock_owner "$lockdir")
>> - if [ "$new_owner" != "$owner" ]
>> - then
>> - owner="$new_owner"
>> - retries=0
>> - else
>> - local pid=$(echo $owner | cut -d : -f 1)
>> - if [ -n "$pid" -a "$pid" != "unknown" -a ! -f "/proc/$pid/status" ]
>> - then
>> - _release_lock $lockdir
>> - fi
>> - fi
>> -
>> + mkdir "$lockdir" 2>/dev/null && trap "_release_lock $lockdir; sigerr"
>> ERR && return
>> if [ $retries -gt $LOCK_SPINNING_RETRIES ]
>> then
>> sleep $LOCK_SLEEPTIME
>> - else
>> - sleep 0
>> fi
>> retries=$(($retries + 1))
>> done
>> @@ -91,20 +73,7 @@ _release_lock()
>> _steal_lock()
>> {
>> local lockdir="$1"
>> - local owner=$(cat "$lockdir/owner" 2>/dev/null || echo "unknown")
>> - log err "Forced to steal lock on $lockdir from $owner!"
>> + log err "Forced to steal lock on $lockdir!"
>> _release_lock "$lockdir"
>> _claim_lock "$lockdir"
>> }
>> -
>> -
>> -_lock_owner()
>> -{
>> - cat "$1/owner" 2>/dev/null || echo "unknown"
>> -}
>> -
>> -
>> -_update_lock_info()
>> -{
>> - echo "$$: $0" >"$1/owner"
>> -}
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxx
>> http://lists.xen.org/xen-devel
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |