All of lore.kernel.org
 help / color / mirror / Atom feed
* Insane contiguous physical memory requirements in blkbk/blktap
@ 2006-10-05 13:11 Stephen C. Tweedie
  2006-10-05 15:38 ` Aron Griffis
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen C. Tweedie @ 2006-10-05 13:11 UTC (permalink / raw)
  To: xen-devel@lists.xensource.com

Hi all,

blkbk and blktap do not load reliably as modules.  As soon as you hit a
boot where a fs needs to be fscked, memory gets fragmented, and the
order-10 (yes, *TEN*) kmalloc in balloon_alloc_empty_page_range() fails.

But is there any need at all for these pages to be contiguous?  All we
do with the start of the array is:

	for (i = 0; i < mmap_pages; i++) {
		pending_vaddrs[i] = mmap_vstart + (i << PAGE_SHIFT);
		pending_grant_handles[i] = BLKBACK_INVALID_HANDLE;
	}

and thereafter we only ever look at individual page addresses indexed
through pending_vaddrs[].

Given that we had problems recently with block IO failing when
straddling a page boundary, we certainly don't have any requirements for
contiguity during normal operations.  The only thing I can see is

struct page *balloon_alloc_empty_page_range(unsigned long nr_pages)
{
...

	balloon_lock(flags);
	if (xen_feature(XENFEAT_auto_translated_physmap)) {
		unsigned long gmfn = __pa(vstart) >> PAGE_SHIFT;
...
		set_xen_guest_handle(reservation.extent_start, &gmfn);
		ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation,
					   &reservation);

which is performing reservations on the whole extent.  Would there be
any real problem simply falling back to multiple reservations of lower
orders if we fail these calls?

--Stephen

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-10-05 16:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-05 13:11 Insane contiguous physical memory requirements in blkbk/blktap Stephen C. Tweedie
2006-10-05 15:38 ` Aron Griffis
2006-10-05 15:47   ` Keir Fraser
2006-10-05 16:10     ` Stephen C. Tweedie
2006-10-05 16:19       ` Keir Fraser
2006-10-05 16:40         ` Stephen C. Tweedie
2006-10-05 16:43           ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.