Commit:     ace2e92e193126711cb3a83a3752b2c5b8396950
Parent:     a122d6230e8d8ac7cffdf0bc9cc4b256b928fe49
Author:     Jeremy Fitzhardinge <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 11:51:31 2007 -0700
Committer:  Jeremy Fitzhardinge <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 11:51:31 2007 -0700

    xfs: eagerly remove vmap mappings to avoid upsetting Xen
    XFS leaves stray mappings around when it vmaps memory to make it
    virtually contigious.  This upsets Xen if one of those pages is being
    recycled into a pagetable, since it finds an extra writable mapping of
    the page.
    This patch solves the problem in a brute force way, by making XFS
    always eagerly unmap its mappings.  David Chinner says this shouldn't
    have any performance impact on filesystems with default block sizes;
    it will only affect filesystems with large block sizes.
    Signed-off-by: Jeremy Fitzhardinge <[EMAIL PROTECTED]>
    Acked-by: David Chinner <[EMAIL PROTECTED]>
    Cc: Nick Piggin <[EMAIL PROTECTED]>
    Cc: XFS masters <[EMAIL PROTECTED]>
    Cc: Stable kernel <[EMAIL PROTECTED]>
    Cc: Morten =?utf-8?q?B=C3=B8geskov?= <[EMAIL PROTECTED]>
    Cc: Mark Williamson <[EMAIL PROTECTED]>
 fs/xfs/linux-2.6/xfs_buf.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c
index 39f44ee..455e042 100644
--- a/fs/xfs/linux-2.6/xfs_buf.c
+++ b/fs/xfs/linux-2.6/xfs_buf.c
@@ -187,6 +187,19 @@ free_address(
        a_list_t        *aentry;
+#ifdef CONFIG_XEN
+       /*
+        * Xen needs to be able to make sure it can get an exclusive
+        * RO mapping of pages it wants to turn into a pagetable.  If
+        * a newly allocated page is also still being vmap()ed by xfs,
+        * it will cause pagetable construction to fail.  This is a
+        * quick workaround to always eagerly unmap pages so that Xen
+        * is happy.
+        */
+       vunmap(addr);
+       return;
        aentry = kmalloc(sizeof(a_list_t), GFP_NOWAIT);
        if (likely(aentry)) {
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to