[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] shred: avoid data write pass with --size=0
From: |
Pádraig Brady |
Subject: |
[PATCH] shred: avoid data write pass with --size=0 |
Date: |
Thu, 7 Nov 2013 14:40:40 +0000 |
* src/shred.c (dopass): Exit early to avoid redundant heap
allocation, and more importantly avoiding a file sync
when we're writting no data, as this can have side effects.
Also with --verbose, this avoids printing of "pass status"
which could be confusing as to whether data was actually written.
* tests/misc/shred-passes.sh: Ensure the status for data
passes are not written when not doing any data writes.
---
src/shred.c | 4 ++++
tests/misc/shred-passes.sh | 14 +++++++++++++-
2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/src/shred.c b/src/shred.c
index 8bee090..444666d 100644
--- a/src/shred.c
+++ b/src/shred.c
@@ -378,6 +378,10 @@ dopass (int fd, char const *qname, off_t *sizep, int type,
size_t soff; /* Offset into buffer for next write */
ssize_t ssize; /* Return value from write */
+ /* Do nothing for --size=0 or regular empty files with --exact. */
+ if (size == 0)
+ return 0;
+
/* Fill pattern buffer. Aligning it to a page so we can do direct I/O. */
size_t page_size = getpagesize ();
#define PERIODIC_OUTPUT_SIZE (60 * 1024)
diff --git a/tests/misc/shred-passes.sh b/tests/misc/shred-passes.sh
index cfdd68e..938683b 100755
--- a/tests/misc/shred-passes.sh
+++ b/tests/misc/shred-passes.sh
@@ -31,9 +31,21 @@ shred: f: removing
shred: f: renamed to 0
shred: f: removed" > exp || framework_failure_
-
shred -v -u f 2>out || fail=1
compare exp out || fail=1
+# Likewise but with --exact to bypass the
+# data passes for the zero length file
+touch f || framework_failure_
+echo "\
+shred: f: removing
+shred: f: renamed to 0
+shred: f: removed" > exp || framework_failure_
+
+shred -x -v -u f 2>out || fail=1
+
+compare exp out || fail=1
+
+
Exit $fail
--
1.7.7.6
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] shred: avoid data write pass with --size=0,
Pádraig Brady <=