linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] src/godown: support f2fs triggering specific ioctl
@ 2015-01-08 18:31 Jaegeuk Kim
  2015-01-08 18:31 ` [PATCH 2/2] f2fs/087: test power failure test using godown Jaegeuk Kim
  2015-01-08 18:44 ` [PATCH 1/2] src/godown: support f2fs triggering specific ioctl Eric Sandeen
  0 siblings, 2 replies; 4+ messages in thread
From: Jaegeuk Kim @ 2015-01-08 18:31 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Jaegeuk Kim, fstests, linux-f2fs-devel

This patch triggers the F2FS-related ioctl for godown.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
 src/godown.c | 88 ++++++++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 65 insertions(+), 23 deletions(-)

diff --git a/src/godown.c b/src/godown.c
index b140a41..b44790b 100644
--- a/src/godown.c
+++ b/src/godown.c
@@ -19,33 +19,82 @@
 #include <syslog.h>
 #include "global.h"
 
+#define F2FS_IOCTL_MAGIC	0xf5
+#define F2FS_IOC_GOINGDOWN	_IO(F2FS_IOCTL_MAGIC, 6)
+
+enum ftypes {
+	XFS_FS,
+	F2FS_FS,
+};
+
 static char *xprogname;
+static char *mnt_dir;
+static int verbose_opt = 0;
+static int flushlog_opt = 0;
 
+static enum ftypes fs = XFS_FS;
 
 static void
 usage(void)
 {
-	fprintf(stderr, "usage: %s [-f] [-v] mnt-dir\n", xprogname);
+	fprintf(stderr, "usage: %s [-f] [-v] [-s 0/1] mnt-dir\n", xprogname);
+}
+
+static int
+xfs_goingdown(int fd)
+{
+	int flag;
+
+	flag = (flushlog_opt ? XFS_FSOP_GOING_FLAGS_LOGFLUSH
+			    : XFS_FSOP_GOING_FLAGS_NOLOGFLUSH);
+	if (verbose_opt) {
+		printf("Calling XFS_IOC_GOINGDOWN\n");
+	}
+
+	syslog(LOG_WARNING, "xfstests-induced forced shutdown of %s:\n",
+			mnt_dir);
+	if ((xfsctl(mnt_dir, fd, XFS_IOC_GOINGDOWN, &flag)) == -1) {
+		fprintf(stderr, "%s: error on xfsctl(GOINGDOWN) of \"%s\": %s\n",
+				xprogname, mnt_dir, strerror(errno));
+		return 1;
+	}
+	return 0;
+}
+
+static int
+f2fs_goingdown(int fd)
+{
+	if (verbose_opt) {
+		printf("Calling F2FS_IOC_GOINGDOWN\n");
+	}
+	syslog(LOG_WARNING, "xfstests-induced forced shutdown of %s:\n",
+			mnt_dir);
+	if ((ioctl(fd, F2FS_IOC_GOINGDOWN)) == -1) {
+		fprintf(stderr, "%s: error on ioctl(GOINGDOWN) of \"%s\": %s\n",
+				xprogname, mnt_dir, strerror(errno));
+		return 1;
+	}
+	return 0;
+
 }
 
 int
 main(int argc, char *argv[])
 {
-	int c;
-	int flag;
-	int flushlog_opt = 0;
-	int verbose_opt = 0;
+	int c, fd;
 	struct stat st;
-	char *mnt_dir;
-	int fd;
+	int ret = 0;
 
       	xprogname = argv[0];
 
-	while ((c = getopt(argc, argv, "fv")) != -1) {
+	while ((c = getopt(argc, argv, "fs:v")) != -1) {
 		switch (c) {
 		case 'f':
 			flushlog_opt = 1;
 			break;
+		case 's':
+			fs = atoi(optarg);
+			break;
 		case 'v':
 			verbose_opt = 1;
 			break;
@@ -94,10 +143,6 @@ main(int argc, char *argv[])
 	}
 #endif
 
-
-	flag = (flushlog_opt ? XFS_FSOP_GOING_FLAGS_LOGFLUSH 
-			    : XFS_FSOP_GOING_FLAGS_NOLOGFLUSH);
-
 	if (verbose_opt) {
 		printf("Opening \"%s\"\n", mnt_dir);
 	}
@@ -107,18 +152,15 @@ main(int argc, char *argv[])
 		return 1;
 	}
 
-	if (verbose_opt) {
-		printf("Calling XFS_IOC_GOINGDOWN\n");
+	switch (fs) {
+	case XFS_FS:
+		ret = xfs_goingdown(fd);
+		break;
+	case F2FS_FS:
+		ret = f2fs_goingdown(fd);
+		break;
 	}
-	syslog(LOG_WARNING, "xfstests-induced forced shutdown of %s:\n",
-		mnt_dir);
-	if ((xfsctl(mnt_dir, fd, XFS_IOC_GOINGDOWN, &flag)) == -1) {
-		fprintf(stderr, "%s: error on xfsctl(GOINGDOWN) of \"%s\": %s\n",
-			xprogname, mnt_dir, strerror(errno));
-		return 1;
-	}
-
 	close(fd);
 
-	return 0;
+	return ret;
 }
-- 
2.1.1


------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-08 20:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-08 18:31 [PATCH 1/2] src/godown: support f2fs triggering specific ioctl Jaegeuk Kim
2015-01-08 18:31 ` [PATCH 2/2] f2fs/087: test power failure test using godown Jaegeuk Kim
2015-01-08 18:44 ` [PATCH 1/2] src/godown: support f2fs triggering specific ioctl Eric Sandeen
2015-01-08 20:09   ` Jaegeuk Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).