aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@systemhalted.org>2015-09-29 11:32:36 -0400
committerCarlos O'Donell <carlos@systemhalted.org>2015-09-29 11:32:36 -0400
commit032f2250086fec2ebda3832f260c3a8955cf281f (patch)
tree509904fa7c31566007e457d31a3c313e562a24da
parenta5721ebc68cc8b761b0ffdf6dcae52723369e071 (diff)
downloadglibc-032f2250086fec2ebda3832f260c3a8955cf281f.tar
glibc-032f2250086fec2ebda3832f260c3a8955cf281f.tar.gz
glibc-032f2250086fec2ebda3832f260c3a8955cf281f.tar.bz2
glibc-032f2250086fec2ebda3832f260c3a8955cf281f.zip
Files open O_WRONLY not supported in fallocate emulation.
In the posix_fallocate description in the manual we list various drawbacks with the emulation, including the fact that a file opened with O_APPEND fails with EBADF. Similarly a file opened with O_WRONLY fails with EBADF. We must be able to emulate a compare-and-swap via pread/compare/pwrite in order to make the emulation as safe as possible. It is not acceptable to ignore the read failure because it could result in significant data loss across all of the blocks. There is no other way to make this work without a true atomic CAS and SIGBUS handler (which is looking more attractive as a way to remove the race condition). This patch adds O_WRONLY to the manual as another bullet to clarify the limits of the emulation. Manual looks good in PDF.
-rw-r--r--ChangeLog5
-rw-r--r--manual/filesys.texi4
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8b5050be4d..8851c6be85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-29 Carlos O'Donell <carlos@redhat.com>
+
+ * manual/filesys.texi (Storage Allocation): Document that
+ posix_fallocate emulation fails when fd is open with O_WRONLY.
+
2015-09-28 Joseph Myers <joseph@codesourcery.com>
[BZ #19016]
diff --git a/manual/filesys.texi b/manual/filesys.texi
index ed4f5fdd85..40648853bd 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -3300,6 +3300,10 @@ underlying file in the to-be-allocated area. Non-null bytes could be
overwritten with null bytes.
@item
+If @var{fd} has been opened with the @code{O_WRONLY} flag, the function
+will fail with an @code{errno} value of @code{EBADF}.
+
+@item
If @var{fd} has been opened with the @code{O_APPEND} flag, the function
will fail with an @code{errno} value of @code{EBADF}.