** New features
+ dd accepts iflag=cio and oflag=cio to open the file in CIO (concurrent I/O)
+ mode where this feature is available.
+
ls --color now highlights hard linked files, too
stat -f recognizes the Lustre file system type
you should also specify @samp{conv=notrunc} unless you want the
output file to be truncated before being appended to.
+@item cio
+@opindex cio
+@cindex concurrent I/O
+Use concurrent I/O mode for data. This mode performs direct I/O
+and drops the @acronym{POSIX} requirement to serialize all I/O to the same file.
+A file cannot be opened in CIO mode and with a standard open at the
+same time.
+
@item direct
@opindex direct
@cindex direct I/O
# define SIGINFO SIGUSR1
#endif
+/* This may belong in GNULIB's fcntl module instead.
+ Define O_CIO to 0 if it is not supported by this OS. */
+#ifndef O_CIO
+# define O_CIO 0
+#endif
+
#if ! HAVE_FDATASYNC
# define fdatasync(fd) (errno = ENOSYS, -1)
#endif
/* Use a value that is larger than that of any other O_ symbol. */
O_FULLBLOCK = ((MAX (O_APPEND,
MAX (O_BINARY,
+ MAX (O_CIO,
MAX (O_DIRECT,
MAX (O_DIRECTORY,
MAX (O_DSYNC,
MAX (O_NOFOLLOW,
MAX (O_NOLINKS,
MAX (O_NONBLOCK,
- MAX (O_SYNC, O_TEXT)))))))))))) << 1)
+ MAX (O_SYNC, O_TEXT))))))))))))) << 1)
};
/* Ensure that we didn't shift it off the end. */
{
{"append", O_APPEND},
{"binary", O_BINARY},
+ {"cio", O_CIO},
{"direct", O_DIRECT},
{"directory", O_DIRECTORY},
{"dsync", O_DSYNC},
\n\
append append mode (makes sense only for output; conv=notrunc suggested)\n\
"), stdout);
+ if (O_CIO)
+ fputs (_(" cio use concurrent I/O for data\n"), stdout);
if (O_DIRECT)
fputs (_(" direct use direct I/O for data\n"), stdout);
if (O_DIRECTORY)