[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools: fix build after recent xenpaging changes
On Fri, 2011-06-24 at 15:35 +0100, Olaf Hering wrote: > On Fri, Jun 24, Ian Campbell wrote: > > > > The break exits the for() loop, not the while(1). In the next iteration > > > page 1 may still be in paging->bitmap and tried again. > > > > I'd missed the interrupted -> 1 in the while loop. I presume there is > > some other exit condition which triggers once everything has been paged > > back in and actually causes the daemon to exit? > > If the for() loop found nothing, then this triggers: > > 775 /* If no more pages to process, exit loop */ > 776 if ( i == paging->domain_info->max_pages ) > 777 break; Oh yes. It's a bit counter intuitive to have a for loop which only processes the first thing it finds and then relying on going round another outer loop to pickup the second etc. It's at least O(N^2), isn't it? Why not count = 0; for ( i = 0; i < paging->domain_info->max_pages; i++ ) { if ( test_bit(i, paging->bitmap) ) { page_in_trigger(i); count++ } } /* If no more pages to process, exit loop */ if ( !count ) break; That will at least process as many pages as it can on each iteration through the outer loop. Although it will most likely exacerbate the locking issue I pointed to earlier. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |