- misc: Add support for Linux uio.h RWF_NOAPPEND flag - Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782) (cherry picked from commit 1108228f750d2bfa9e9b66888ef037f7a30cfd1a)
76 lines
2.7 KiB
Diff
76 lines
2.7 KiB
Diff
From c8cb4d2b86ece572793e31a3422ea29e88d77df5 Mon Sep 17 00:00:00 2001
|
|
From: Stafford Horne <shorne@gmail.com>
|
|
Date: Wed, 3 Apr 2024 06:40:37 +0100
|
|
Subject: [PATCH 2/2] misc: Add support for Linux uio.h RWF_NOAPPEND flag
|
|
|
|
In Linux 6.9 a new flag is added to allow for Per-io operations to
|
|
disable append mode even if a file was opened with the flag O_APPEND.
|
|
This is done with the new RWF_NOAPPEND flag.
|
|
|
|
This caused two test failures as these tests expected the flag 0x00000020
|
|
to be unused. Adding the flag definition now fixes these tests on Linux
|
|
6.9 (v6.9-rc1).
|
|
|
|
FAIL: misc/tst-preadvwritev2
|
|
FAIL: misc/tst-preadvwritev64v2
|
|
|
|
This patch adds the flag, adjusts the test and adds details to
|
|
documentation.
|
|
|
|
Link: https://lore.kernel.org/all/20200831153207.GO3265@brightrain.aerifal.cx/
|
|
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
|
(cherry picked from commit 3db9d208dd5f30b12900989c6d2214782b8e2011)
|
|
---
|
|
manual/llio.texi | 4 ++++
|
|
misc/tst-preadvwritev2-common.c | 5 ++++-
|
|
sysdeps/unix/sysv/linux/bits/uio-ext.h | 1 +
|
|
3 files changed, 9 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/manual/llio.texi b/manual/llio.texi
|
|
index 0b61d491f5..fae49d1433 100644
|
|
--- a/manual/llio.texi
|
|
+++ b/manual/llio.texi
|
|
@@ -1339,6 +1339,10 @@ will fail and set @code{errno} to @code{EAGAIN} if the operation would block.
|
|
|
|
@item RWF_APPEND
|
|
Per-IO synchronization as if the file was opened with @code{O_APPEND} flag.
|
|
+
|
|
+@item RWF_NOAPPEND
|
|
+This flag allows an offset to be honored, even if the file was opened with
|
|
+@code{O_APPEND} flag.
|
|
@end vtable
|
|
|
|
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
|
|
diff --git a/misc/tst-preadvwritev2-common.c b/misc/tst-preadvwritev2-common.c
|
|
index 355dbea05c..0d3729eac0 100644
|
|
--- a/misc/tst-preadvwritev2-common.c
|
|
+++ b/misc/tst-preadvwritev2-common.c
|
|
@@ -34,8 +34,11 @@
|
|
#ifndef RWF_APPEND
|
|
# define RWF_APPEND 0
|
|
#endif
|
|
+#ifndef RWF_NOAPPEND
|
|
+# define RWF_NOAPPEND 0
|
|
+#endif
|
|
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT \
|
|
- | RWF_APPEND)
|
|
+ | RWF_APPEND | RWF_NOAPPEND)
|
|
|
|
/* Generic uio_lim.h does not define IOV_MAX. */
|
|
#ifndef IOV_MAX
|
|
diff --git a/sysdeps/unix/sysv/linux/bits/uio-ext.h b/sysdeps/unix/sysv/linux/bits/uio-ext.h
|
|
index 311f5b16ce..d641f57b01 100644
|
|
--- a/sysdeps/unix/sysv/linux/bits/uio-ext.h
|
|
+++ b/sysdeps/unix/sysv/linux/bits/uio-ext.h
|
|
@@ -47,6 +47,7 @@ extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec,
|
|
#define RWF_SYNC 0x00000004 /* per-IO O_SYNC. */
|
|
#define RWF_NOWAIT 0x00000008 /* per-IO nonblocking mode. */
|
|
#define RWF_APPEND 0x00000010 /* per-IO O_APPEND. */
|
|
+#define RWF_NOAPPEND 0x00000020 /* per-IO negation of O_APPEND */
|
|
|
|
__END_DECLS
|
|
|
|
--
|
|
2.33.0
|
|
|