Expose the resize.f2fs utility from f2fs-tools, to expand a f2fs
filesystem.
---
 daemon/Makefile.am        |  1 +
 daemon/f2fs.c             | 49 +++++++++++++++++++++++++++++++++++++++++++++++
 generator/actions_core.ml |  9 +++++++++
 generator/proc_nr.ml      |  1 +
 lib/MAX_PROC_NR           |  2 +-
 5 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 daemon/f2fs.c

diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index ba5d8deed..5df41fd79 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -113,6 +113,7 @@ guestfsd_SOURCES = \
        du.c \
        echo-daemon.c \
        ext2.c \
+       f2fs.c \
        fallocate.c \
        file.c \
        fill.c \
diff --git a/daemon/f2fs.c b/daemon/f2fs.c
new file mode 100644
index 000000000..74108a3b1
--- /dev/null
+++ b/daemon/f2fs.c
@@ -0,0 +1,49 @@
+/* libguestfs - the guestfsd daemon
+ * Copyright (C) 2018 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "daemon.h"
+#include "actions.h"
+#include "optgroups.h"
+
+int
+optgroup_f2fs_available (void)
+{
+  return prog_exists ("resize.f2fs");
+}
+
+int
+do_f2fs_expand (const char *device)
+{
+  CLEANUP_FREE char *err = NULL;
+  int r;
+
+  r = commandf (NULL, &err, COMMAND_FLAG_FOLD_STDOUT_ON_STDERR,
+                "resize.f2fs", device, NULL);
+  if (r == -1) {
+    reply_with_error ("%s", err);
+    return -1;
+  }
+
+  return 0;
+}
diff --git a/generator/actions_core.ml b/generator/actions_core.ml
index 544cb6ea7..394576398 100644
--- a/generator/actions_core.ml
+++ b/generator/actions_core.ml
@@ -9708,4 +9708,13 @@ When growing a partition you will want to grow the 
filesystem
 afterwards, but when shrinking, you need to shrink the filesystem
 before the partition." };
 
+  { defaults with
+    name = "f2fs_expand"; added = (1, 39, 3);
+    style = RErr, [String (Device, "device")], [];
+    optional = Some "f2fs";
+    shortdesc = "expand a f2fs filesystem";
+    longdesc = "\
+This expands a f2fs filesystem to match the size of the underlying
+device." };
+
 ]
diff --git a/generator/proc_nr.ml b/generator/proc_nr.ml
index 9e16ab14a..ca73aa361 100644
--- a/generator/proc_nr.ml
+++ b/generator/proc_nr.ml
@@ -512,6 +512,7 @@ let proc_nr = [
 502, "inspect_get_drive_mappings";
 503, "part_set_gpt_attributes";
 504, "part_get_gpt_attributes";
+505, "f2fs_expand";
 ]
 
 (* End of list.  If adding a new entry, add it at the end of the list
diff --git a/lib/MAX_PROC_NR b/lib/MAX_PROC_NR
index 3091e8eea..f573e999a 100644
--- a/lib/MAX_PROC_NR
+++ b/lib/MAX_PROC_NR
@@ -1 +1 @@
-504
+505
-- 
2.14.3

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://www.redhat.com/mailman/listinfo/libguestfs

Reply via email to