linux-f2fs-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Dave Chinner <david@fromorbit.com>
Cc: Jaegeuk Kim <jaegeuk@kernel.org>,
	fstests@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: [PATCH 1/2] src/godown: support f2fs triggering specific ioctl
Date: Thu,  8 Jan 2015 10:31:18 -0800	[thread overview]
Message-ID: <1420741879-73691-1-git-send-email-jaegeuk@kernel.org> (raw)

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

             reply	other threads:[~2015-01-08 18:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-08 18:31 Jaegeuk Kim [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1420741879-73691-1-git-send-email-jaegeuk@kernel.org \
    --to=jaegeuk@kernel.org \
    --cc=david@fromorbit.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).