1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-08-10 02:30:27 +02:00

dd: add support for opening files in Concurrent I/O (CIO) mode

* src/dd.c (O_CIO): New flag.
* src/dd.c (O_FULLBLOCK): Add O_CIO to the list of flags that
O_FULLBLOCK should be greater than.
* src/dd.c (flags): Give the name "cio" to the new O_CIO flag, mirroring
the treatment of O_DIRECT.
* src/dd.c (usage): Add a description of the new flag when it is available.
* doc/coreutils.text (dd invocation): Describe the new flag.
* NEWS: Mention the new feature.
This commit is contained in:
Matt Harden
2008-12-21 22:06:16 -06:00
committed by Jim Meyering
parent 680afe6751
commit 5c065bb0cb
3 changed files with 22 additions and 1 deletions
+3
View File
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*- outline -*-
** 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
+8
View File
@@ -7729,6 +7729,14 @@ If you combine this flag with the @samp{of=@var{file}} operand,
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
+11 -1
View File
@@ -66,6 +66,12 @@ static void process_signals (void);
# 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
@@ -264,6 +270,7 @@ enum
/* 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,
@@ -272,7 +279,7 @@ enum
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. */
@@ -288,6 +295,7 @@ static struct symbol_value const flags[] =
{
{"append", O_APPEND},
{"binary", O_BINARY},
{"cio", O_CIO},
{"direct", O_DIRECT},
{"directory", O_DIRECTORY},
{"dsync", O_DSYNC},
@@ -508,6 +516,8 @@ Each FLAG symbol may be:\n\
\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)