aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toys/other/fsfreeze.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/toys/other/fsfreeze.c b/toys/other/fsfreeze.c
new file mode 100644
index 00000000..f7b8a946
--- /dev/null
+++ b/toys/other/fsfreeze.c
@@ -0,0 +1,30 @@
+/* fsfreeze.c - freeze or thaw filesystem
+ *
+ * No standard.
+
+USE_FSFREEZE(NEWTOY(fsfreeze, "<1>1f|u|[!fu]", TOYFLAG_USR|TOYFLAG_SBIN))
+
+config FSFREEZE
+ bool "fsfreeze"
+ default y
+ help
+ usage: fsfreeze {-f | -u} MOUNTPOINT
+
+ Freeze or unfreeze a filesystem.
+
+ -f freeze
+ -u unfreeze
+*/
+
+#define FOR_fsfreeze
+#include "toys.h"
+#include <linux/fs.h>
+
+void fsfreeze_main(void)
+{
+ int fd = xopen(*toys.optargs, O_RDONLY);
+ long p = 1;
+
+ xioctl(fd, (toys.optflags & FLAG_f) ? FIFREEZE : FITHAW, &p);
+ xclose(fd);
+}