summaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-12-08 11:39:58 +0000
committerRichard W.M. Jones <rjones@redhat.com>2011-12-08 11:39:58 +0000
commit19e2f5aa4fd4ed70b505661d918b5575616ad441 (patch)
treebc44d725ef7bae6ecd8593607f0f2a5e50279a7d /generator
parent31fba8d8033216f8a288e75fe3f575b73b9ef925 (diff)
downloadlibguestfs-19e2f5aa4fd4ed70b505661d918b5575616ad441.tar.gz
libguestfs-19e2f5aa4fd4ed70b505661d918b5575616ad441.tar.xz
libguestfs-19e2f5aa4fd4ed70b505661d918b5575616ad441.zip
daemon: Fix utimens so it doesn't hang on named pipes (RHBZ#761460).
This also adds comprehensive tests for utimens on regular files, directories (RHBZ#761451), named pipes (RHBZ#761460), symbolic links, block and char devices. Note that there is a small change in the (previously undefined) semantics of this call: It now sets the time on a symbolic link itself, not on what the symbolic link points to.
Diffstat (limited to 'generator')
-rw-r--r--generator/generator_actions.ml27
1 files changed, 24 insertions, 3 deletions
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 55e8d5da..dae837b5 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -4819,10 +4819,31 @@ for the file until you write to it). To create a non-sparse
file of zeroes, use C<guestfs_fallocate64> instead.");
("utimens", (RErr, [Pathname "path"; Int64 "atsecs"; Int64 "atnsecs"; Int64 "mtsecs"; Int64 "mtnsecs"], []), 201, [],
+ (* Test directories, named pipes etc (RHBZ#761451, RHBZ#761460) *)
[InitScratchFS, Always, TestOutputStruct (
- [["touch"; "/utimens"];
- ["utimens"; "/utimens"; "12345"; "67890"; "9876"; "5432"];
- ["stat"; "/utimens"]], [CompareWithInt ("mtime", 9876)])],
+ [["touch"; "/utimens-file"];
+ ["utimens"; "/utimens-file"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-file"]], [CompareWithInt ("mtime", 9876)]);
+ InitScratchFS, Always, TestOutputStruct (
+ [["mkdir"; "/utimens-dir"];
+ ["utimens"; "/utimens-dir"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-dir"]], [CompareWithInt ("mtime", 9876)]);
+ InitScratchFS, Always, TestOutputStruct (
+ [["mkfifo"; "0o644"; "/utimens-fifo"];
+ ["utimens"; "/utimens-fifo"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-fifo"]], [CompareWithInt ("mtime", 9876)]);
+ InitScratchFS, Always, TestOutputStruct (
+ [["ln_sf"; "/utimens-file"; "/utimens-link"];
+ ["utimens"; "/utimens-link"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-link"]], [CompareWithInt ("mtime", 9876)]);
+ InitScratchFS, Always, TestOutputStruct (
+ [["mknod_b"; "0o644"; "8"; "0"; "/utimens-block"];
+ ["utimens"; "/utimens-block"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-block"]], [CompareWithInt ("mtime", 9876)]);
+ InitScratchFS, Always, TestOutputStruct (
+ [["mknod_c"; "0o644"; "1"; "3"; "/utimens-char"];
+ ["utimens"; "/utimens-char"; "12345"; "67890"; "9876"; "5432"];
+ ["stat"; "/utimens-char"]], [CompareWithInt ("mtime", 9876)])],
"set timestamp of a file with nanosecond precision",
"\
This command sets the timestamps of a file with nanosecond