mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-21 11:16:16 +02:00
dd: add a flag to discard cached data
* src/dd.c (FFS_MASK): A new macro (Find First Set) refactored from the following enum as it's now used twice. (usage): Mention the new 'nocache' flag. (cache_round): A new function to help ignore requests to drop cache, that are less than page_size. (invalidate_cache): A new function to call posix_fadvise() with the appropriate offset and length. Note we don't use fdadvise() so we can detect errors when count=0. (dd_copy): Call invalidate_cache() for the portions read. (iwrite): Likewise for the portions written. (main): Call invalidate_cache for page_size slop or for full file when count=0. * cfg.mk (sc_dd_O_FLAGS): Adjust to pass. * doc/coreutils.texi (dd invocation): Describe the 'nocache' flag, and give some examples of how it can be used. * tests/dd/nocache: A new test. * tests/Makefile.am: Reference the new test. * NEWS: Mention the new feature.
This commit is contained in:
@@ -8174,6 +8174,31 @@ last-access and last-modified time) is not necessarily synchronized.
|
||||
@cindex synchronized data and metadata I/O
|
||||
Use synchronized I/O for both data and metadata.
|
||||
|
||||
@item nocache
|
||||
@opindex nocache
|
||||
@cindex discarding file cache
|
||||
Discard the data cache for a file.
|
||||
When count=0 all cache is discarded,
|
||||
otherwise the cache is dropped for the processed
|
||||
portion of the file. Also when count=0
|
||||
failure to discard the cache is diagnosed
|
||||
and reflected in the exit status.
|
||||
Here as some usage examples:
|
||||
|
||||
@example
|
||||
# Advise to drop cache for whole file
|
||||
dd if=ifile iflag=nocache count=0
|
||||
|
||||
# Ensure drop cache for the whole file
|
||||
dd of=ofile oflag=nocache conv=notrunc,fdatasync count=0
|
||||
|
||||
# Drop cache for part of file
|
||||
dd if=ifile iflag=nocache skip=10 count=10 of=/dev/null
|
||||
|
||||
# Stream data using just the read-ahead cache
|
||||
dd if=ifile of=ofile iflag=nocache oflag=nocache
|
||||
@end example
|
||||
|
||||
@item nonblock
|
||||
@opindex nonblock
|
||||
@cindex nonblocking I/O
|
||||
|
||||
Reference in New Issue
Block a user