Re: [Xen-devel] [PATCH v4 6/8] mm: Keep heap accessible to others while scrubbing

2017-06-12 Thread Boris Ostrovsky
>> @@ -1175,6 +1258,8 @@ static void free_heap_pages( >> if ( page_state_is(&pg[i], offlined) ) >> tainted = 1; >> >> +pg[i].u.free.scrub_state = 0; > Is this really needed for every page in the buddy? > The concern here is that is we break the buddy (in alloc_heap

Re: [Xen-devel] [PATCH v4 6/8] mm: Keep heap accessible to others while scrubbing

2017-06-12 Thread Jan Beulich
>>> On 19.05.17 at 17:50, wrote: > @@ -1090,24 +1131,51 @@ bool scrub_free_pages(void) > do { > while ( !page_list_empty(&heap(node, zone, order)) ) > { > -unsigned int i; > +unsigned int i, dirty_cnt; > +struct scr

[Xen-devel] [PATCH v4 6/8] mm: Keep heap accessible to others while scrubbing

2017-05-19 Thread Boris Ostrovsky
Instead of scrubbing pages while holding heap lock we can mark buddy's head as being scrubbed and drop the lock temporarily. If someone (most likely alloc_heap_pages()) tries to access this chunk it will signal the scrubber to abort scrub by setting head's PAGE_SCRUB_ABORT bit. The scrubber checks