]> git.ipfire.org Git - thirdparty/coreutils.git/commit
shred: provide --remove methods to avoid excessive syncing
authorPádraig Brady <P@draigBrady.com>
Thu, 7 Nov 2013 17:00:56 +0000 (17:00 +0000)
committerPádraig Brady <P@draigBrady.com>
Wed, 27 Nov 2013 01:43:12 +0000 (01:43 +0000)
commit569b4edd18cddb5a8cc1f9549a7c1eed91b674f7
tree00acb5a1a0da66ae42e6b61f2befd144c716f466
parentba6582e95ce2a041423e1ff34c93abe7b4702332
shred: provide --remove methods to avoid excessive syncing

A sync operation is very often expensive.  For illustration
I timed the following python script which indicated that
each ext4 dir sync was taking about 2ms and 12ms, on an
SSD and traditional disk respectively.

  import os
  d=os.open(".", os.O_DIRECTORY|os.O_RDONLY)
  for i in range(1000):
     os.fdatasync(d)

So syncing for each character for each file can result
in significant delays.  Often this overhead is redundant,
as only the data is sensitive and not the file name.
Even if the names are sensitive, your file system may
employ synchronous metadata updates, which also makes
explicit syncing redundant.

* tests/misc/shred-remove.sh: Ensure all the new parameters
actually unlink the file.
* doc/coreutils.texi (shred invocation): Describe the new
parameters to the --remove option.
* src/shred.c (Usage): Likewise.
(main): Parse the new options.
(wipename): Inspect the new enum to see which of
the now optional tasks to perform.
* NEWS: Mention the new feature.
* THANKS.in: Add reporter Joseph D. Wagner
NEWS
THANKS.in
doc/coreutils.texi
src/shred.c
tests/misc/shred-remove.sh