[Cluster-devel] cluster/gfs2 man/gfs2_tool.8 tool/gfs2_tool.h ...

rpeterso at sourceware.org rpeterso at sourceware.org
Tue Oct 30 14:06:08 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	rpeterso at sourceware.org	2007-10-30 14:06:06

Modified files:
	gfs2/man       : gfs2_tool.8 
	gfs2/tool      : gfs2_tool.h main.c misc.c 

Log message:
	Resolves: bz 349601: GFS2 requires straightforward way to determine
	number of journals

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/man/gfs2_tool.8.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/tool/gfs2_tool.h.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/tool/main.c.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/tool/misc.c.diff?cvsroot=cluster&r1=1.10&r2=1.11

--- cluster/gfs2/man/gfs2_tool.8	2007/07/26 23:19:31	1.4
+++ cluster/gfs2/man/gfs2_tool.8	2007/10/30 14:06:06	1.5
@@ -41,6 +41,9 @@
 \fBgettune\fP \fIMountPoint\fR
 Print out the current values of the tuning parameters in a running
 filesystem.
+.TP
+\fBjournals\fP \fIMountPoint\fR
+Print out information about the journals in a mounted filesystem.
 .\".TP
 .\"\fBjindex\fP \fIMountPoint\fR
 .\"Print out the journal index of a mounted filesystem.
--- cluster/gfs2/tool/gfs2_tool.h	2007/10/25 14:14:33	1.7
+++ cluster/gfs2/tool/gfs2_tool.h	2007/10/30 14:06:06	1.8
@@ -72,6 +72,7 @@
 void print_sb(int argc, char **argv);
 void print_args(int argc, char **argv);
 void print_jindex(int argc, char **argv);
+void print_journals(int argc, char **argv);
 void print_rindex(int argc, char **argv);
 void print_quota(int argc, char **argv);
 void print_list(void);
--- cluster/gfs2/tool/main.c	2007/10/11 20:27:49	1.6
+++ cluster/gfs2/tool/main.c	2007/10/30 14:06:06	1.7
@@ -53,6 +53,9 @@
 	"Get tuneable parameters for a filesystem\n",
 	"  gfs2_tool gettune <mountpoint>\n",
 	"\n",
+	"List the file system's journals:\n",
+	"  gfs2_tool journals <mountpoint>\n",
+	"\n",
 	"List filesystems:\n",
 	"  gfs2_tool list\n",
 	"\n",
@@ -235,6 +238,8 @@
 		print_args(argc, argv);
 	else if (strcmp(action, "gettune") == 0)
 		get_tune(argc, argv);
+	else if (strcmp(action, "journals") == 0)
+		print_journals(argc, argv);
 	else if (strcmp(action, "list") == 0)
 		print_list();
 	else if (strcmp(action, "lockdump") == 0)
--- cluster/gfs2/tool/misc.c	2007/10/25 14:27:33	1.10
+++ cluster/gfs2/tool/misc.c	2007/10/30 14:06:06	1.11
@@ -358,6 +358,71 @@
 	
 }
 
+/**
+ * print_journals - print out the file system journal information
+ * @argc:
+ * @argv:
+ *
+ */
+
+void
+print_journals(int argc, char **argv)
+{
+	struct gfs2_sbd sbd;
+	DIR *jindex;
+	struct dirent *journal;
+	char jindex_name[PATH_MAX], jname[PATH_MAX];
+	int jcount;
+	struct stat statbuf;
+
+	memset(&sbd, 0, sizeof(struct gfs2_sbd));
+	sbd.bsize = GFS2_DEFAULT_BSIZE;
+	sbd.rgsize = -1;
+	sbd.jsize = GFS2_DEFAULT_JSIZE;
+	sbd.qcsize = GFS2_DEFAULT_QCSIZE;
+	sbd.md.journals = 1;
+
+	sbd.path_name = argv[optind];
+	sbd.path_fd = open(sbd.path_name, O_RDONLY);
+	if (sbd.path_fd < 0)
+		die("can't open root directory %s: %s\n",
+		    sbd.path_name, strerror(errno));
+	check_for_gfs2(&sbd);
+	sbd.device_fd = open(sbd.device_name, O_RDONLY);
+	if (sbd.device_fd < 0)
+		die("can't open device %s: %s\n",
+		    sbd.device_name, strerror(errno));
+	if (!find_gfs2_meta(&sbd))
+		mount_gfs2_meta(&sbd);
+	lock_for_admin(&sbd);
+
+	sprintf(jindex_name, "%s/jindex", sbd.metafs_path);
+	jindex = opendir(jindex_name);
+	if (!jindex) {
+		die("Can't open %s\n", jindex_name);
+	} else {
+		jcount = 0;
+		while ((journal = readdir(jindex))) {
+			if (journal->d_name[0] == '.')
+				continue;
+			sprintf(jname, "%s/%s", jindex_name, journal->d_name);
+			if (stat(jname, &statbuf)) {
+				statbuf.st_size = 0;
+				perror(jname);
+			}
+			jcount++;
+			printf("%s - %lluMB\n", journal->d_name,
+			       (unsigned long long)statbuf.st_size / 1048576);
+		}
+
+		printf("%d journal(s) found.\n", jcount);
+		closedir(jindex);
+	}
+	cleanup_metafs(&sbd);
+	close(sbd.device_fd);
+	close(sbd.path_fd);
+}
+
 #if GFS2_TOOL_FEATURE_IMPLEMENTED 
 /**
  * print_jindex - print out the journal index




More information about the Cluster-devel mailing list