Merged revisions 85678 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85678 | r.david.murray | 2010-10-17 21:14:06 -0400 (Sun, 17 Oct 2010) | 5 lines

  #678250: Make mmap flush a noop on ACCESS_READ and ACCESS_COPY.

  Patch by Sébastien Sablé.  This solves a test_mmap failure on AIX.
........
diff --git a/Misc/NEWS b/Misc/NEWS
index 7eac644..aa9020e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,11 @@
 
 - Issue #10464: netrc now correctly handles lines with embedded '#' characters.
 
+Extensions
+----------
+
+- Issue #678250: Make mmap flush a noop on ACCESS_READ and ACCESS_COPY.
+
 Tests
 -----
 
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 0005113..79a8a68 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -125,7 +125,8 @@
     if (m_obj->fd >= 0)
         (void) close(m_obj->fd);
     if (m_obj->data!=NULL) {
-        msync(m_obj->data, m_obj->size, MS_SYNC);
+        if (m_obj->access != ACCESS_READ && m_obj->access != ACCESS_COPY)
+            msync(m_obj->data, m_obj->size, MS_SYNC);
         munmap(m_obj->data, m_obj->size);
     }
 #endif /* UNIX */
@@ -570,6 +571,10 @@
         PyErr_SetString(PyExc_ValueError, "flush values out of range");
         return NULL;
     }
+
+    if (self->access == ACCESS_READ || self->access == ACCESS_COPY)
+        return PyLong_FromLong(0);
+
 #ifdef MS_WINDOWS
     return PyLong_FromLong((long) FlushViewOfFile(self->data+offset, size));
 #elif defined(UNIX)