This is an automated email from the git hooks/post-receive script.
andyp pushed a commit to branch master
in repository gfs2-utils.
commit ec2fe1f3b09352c83d5432af3981549e7651f32c
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Tue Jun 9 14:42:04 2020 +0100
savemeta: Allow saving to /dev/null
Guard against calling ftruncate() on special files, which is an EINVAL.
This allows test 'saving' to /dev/null e.g. to measure read performance
better.
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/edit/savemeta.c | 8 ++++++--
tests/edit.at | 8 ++++++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 3bd3584..b44e887 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -447,6 +447,7 @@ static struct metafd savemetaopen(char *out_fn, int gziplevel)
char gzmode[3] = "w9";
char dft_fn[] = DFT_SAVE_FILE;
mode_t mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
+ struct stat st;
mfd.gziplevel = gziplevel;
@@ -463,8 +464,11 @@ static struct metafd savemetaopen(char *out_fn, int gziplevel)
fprintf(stderr, "Can't open %s: %s\n", out_fn, strerror(errno));
exit(1);
}
-
- if (ftruncate(mfd.fd, 0)) {
+ if (fstat(mfd.fd, &st) == -1) {
+ fprintf(stderr, "Failed to stat %s: %s\n", out_fn, strerror(errno));
+ exit(1);
+ }
+ if (S_ISREG(st.st_mode) && ftruncate(mfd.fd, 0)) {
fprintf(stderr, "Can't truncate %s: %s\n", out_fn, strerror(errno));
exit(1);
}
diff --git a/tests/edit.at b/tests/edit.at
index c9c341b..d70d012 100644
--- a/tests/edit.at
+++ b/tests/edit.at
@@ -53,3 +53,11 @@ GFS_TGT_REGEN
AT_CHECK([gfs2_edit restoremeta test.meta $GFS_TGT], 0, [ignore], [ignore])
AT_CHECK([fsck.gfs2 -n $GFS_TGT], 0, [ignore], [ignore])
AT_CLEANUP
+
+AT_SETUP([Save metadata to /dev/null])
+AT_KEYWORDS(gfs2_edit edit)
+GFS_TGT_REGEN
+AT_CHECK([$GFS_MKFS -p lock_nolock $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([gfs2_edit savemeta -z0 $GFS_TGT /dev/null], 0, [ignore], [ignore])
+AT_CHECK([gfs2_edit savemeta $GFS_TGT /dev/null], 0, [ignore], [ignore])
+AT_CLEANUP
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.