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