mirror of https://github.com/python/cpython
(Merge 3.1) Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X
to get around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso.
This commit is contained in:
parent
cfa8483051
commit
112d48ac17
|
@ -94,6 +94,10 @@ memory but does not update the underlying file.
|
||||||
defaults to 0. *offset* must be a multiple of the PAGESIZE or
|
defaults to 0. *offset* must be a multiple of the PAGESIZE or
|
||||||
ALLOCATIONGRANULARITY.
|
ALLOCATIONGRANULARITY.
|
||||||
|
|
||||||
|
To ensure validity of the created memory mapping the file specified
|
||||||
|
by the descriptor *fileno* is internally automatically synchronized
|
||||||
|
with physical backing store on Mac OS X and OpenVMS.
|
||||||
|
|
||||||
This example shows a simple way of using :class:`mmap`::
|
This example shows a simple way of using :class:`mmap`::
|
||||||
|
|
||||||
import mmap
|
import mmap
|
||||||
|
|
|
@ -70,6 +70,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X to get
|
||||||
|
around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso.
|
||||||
|
|
||||||
- Issue #10761: Fix tarfile.extractall failure when symlinked files are
|
- Issue #10761: Fix tarfile.extractall failure when symlinked files are
|
||||||
present. Initial patch by Scott Leerssen.
|
present. Initial patch by Scott Leerssen.
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
|
|
||||||
#ifndef MS_WINDOWS
|
#ifndef MS_WINDOWS
|
||||||
#define UNIX
|
#define UNIX
|
||||||
|
# ifdef __APPLE__
|
||||||
|
# include <fcntl.h>
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
|
@ -1170,6 +1173,12 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict)
|
||||||
"mmap invalid access parameter.");
|
"mmap invalid access parameter.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
/* Issue #11277: fsync(2) is not enough on OS X - a special, OS X specific
|
||||||
|
fcntl(2) is necessary to force DISKSYNC and get around mmap(2) bug */
|
||||||
|
if (fd != -1)
|
||||||
|
(void)fcntl(fd, F_FULLFSYNC);
|
||||||
|
#endif
|
||||||
#ifdef HAVE_FSTAT
|
#ifdef HAVE_FSTAT
|
||||||
# ifdef __VMS
|
# ifdef __VMS
|
||||||
/* on OpenVMS we must ensure that all bytes are written to the file */
|
/* on OpenVMS we must ensure that all bytes are written to the file */
|
||||||
|
|
Loading…
Reference in New Issue