New API: fallocate64 (replaces fallocate).
authorRichard Jones <rjones@redhat.com>
Thu, 27 May 2010 08:48:22 +0000 (09:48 +0100)
committerRichard Jones <rjones@redhat.com>
Thu, 27 May 2010 08:48:22 +0000 (09:48 +0100)
guestfs_fallocate takes an integer for the length, effectively
limiting it to creating 1GB files.  This new call takes an int64_t
for the length, but is otherwise identical.

daemon/fallocate.c
src/MAX_PROC_NR
src/generator.ml

index 4947430..0c948ff 100644 (file)
 int
 do_fallocate (const char *path, int len)
 {
+  if (len < 0) {
+    reply_with_error ("length < 0");
+    return -1;
+  }
+
+  return do_fallocate64 (path, len);
+}
+
+int
+do_fallocate64 (const char *path, int64_t len)
+{
   int fd;
 
   CHROOT_IN;
index 1f7e0d6..2197544 100644 (file)
@@ -1 +1 @@
-251
+252
index 6db6aeb..96a5847 100755 (executable)
@@ -3475,7 +3475,7 @@ The C<-f> option removes the link (C<linkname>) if it exists already.");
    "\
 This command reads the target of a symbolic link.");
 
-  ("fallocate", (RErr, [Pathname "path"; Int "len"]), 169, [],
+  ("fallocate", (RErr, [Pathname "path"; Int "len"]), 169, [DeprecatedBy "fallocate64"],
    [InitBasicFS, Always, TestOutputStruct (
       [["fallocate"; "/a"; "1000000"];
        ["stat"; "/a"]], [CompareWithInt ("size", 1_000_000)])],
@@ -4722,6 +4722,28 @@ returned list.
 
 See also C<guestfs_available> and L<guestfs(3)/AVAILABILITY>.");
 
+  ("fallocate64", (RErr, [Pathname "path"; Int64 "len"]), 252, [],
+   [InitBasicFS, Always, TestOutputStruct (
+      [["fallocate64"; "/a"; "1000000"];
+       ["stat"; "/a"]], [CompareWithInt ("size", 1_000_000)])],
+   "preallocate a file in the guest filesystem",
+   "\
+This command preallocates a file (containing zero bytes) named
+C<path> of size C<len> bytes.  If the file exists already, it
+is overwritten.
+
+Note that this call allocates disk blocks for the file.
+To create a sparse file use C<guestfs_truncate_size> instead.
+
+The deprecated call C<guestfs_fallocate> does the same,
+but owing to an oversight it only allowed 30 bit lengths
+to be specified, effectively limiting the maximum size
+of files created through that call to 1GB.
+
+Do not confuse this with the guestfish-specific
+C<alloc> and C<sparse> commands which create
+a file in the host and attach it as a device.");
+
 ]
 
 let all_functions = non_daemon_functions @ daemon_functions