WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] x86: fix domain cleanup

To: "Keir Fraser" <keir.fraser@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] x86: fix domain cleanup
From: "Jan Beulich" <jbeulich@xxxxxxxxxx>
Date: Wed, 29 Oct 2008 14:48:17 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 29 Oct 2008 07:48:24 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C52C9915.2873B%keir.fraser@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4906F204.76E4.0078.0@xxxxxxxxxx> <C52C9915.2873B%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> Keir Fraser <keir.fraser@xxxxxxxxxxxxx> 28.10.08 11:25 >>>
>On 28/10/08 10:05, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:
>
>>> Ah, looks like it's been broken since the preemptible page_type patch went
>>> in. Perhaps the tail of free_page_type() should go into __put_page_type(),
>>> as it's not needed by the call site in relinquish_memory(): the caller
>>> doesn't really hold a type reference to be dropped; and the logic for being
>>> preempted doesn't apply since relinquish_memory() requests no preemption.
>> 
>> It doesn't at present, but it should (in favor of
>> DOMAIN_DESTRUCT_AVOID_RECURSION),
>> including the put_page_and_type() earlier in that function. But of course,
>> it may still turn out that cleaning up after preemption here must be handled
>> differently from the __put_page_type() case. I'll give moving that part
>> (and removing the put_page() added yesterday) a try.

Okay, seems like it finally starts to work - it turned out that indeed we need
to distinguish whether a page was partially allocated or partially freed:
Partial allocation does not grab a general page reference, while partial free
doesn't drop it. My test box now survived 8 instances (out of 100 VM
destroys) where the VM got killed with a partially allocated page (and also
without leaking memory), but I surely want to run it for some more time,
especially also after removing all the debugging output I had to add to
figure what's going on (which makes the timing all different, but luckily
apparently increased the likelihood of running into the problem).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel