[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Cluster-devel] cluster/gfs2/mkfs main_mkfs.c



CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	rohara sourceware org	2007-07-10 19:18:44

Modified files:
	gfs2/mkfs      : main_mkfs.c 

Log message:
	BZ 240584 - Check to see if device is mounted before creating filesystem.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mkfs/main_mkfs.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.8.2.6&r2=1.8.2.7

--- cluster/gfs2/mkfs/main_mkfs.c	2007/06/06 15:21:12	1.8.2.6
+++ cluster/gfs2/mkfs/main_mkfs.c	2007/07/10 19:18:44	1.8.2.7
@@ -23,6 +23,7 @@
 #include <time.h>
 #include <errno.h>
 #include <stdarg.h>
+#include <mntent.h>
 
 #include <linux/types.h>
 #include "libgfs2.h"
@@ -283,6 +284,38 @@
 }
 
 /**
+ * check_mount - check to see if device is mounted
+ * @device: the device to create the filesystem on
+ *
+ */
+
+void check_mount(char *device)
+{
+	struct mntent *mnt;
+	FILE *fp;
+
+	if ((fp = setmntent("/proc/mounts", "r")) == NULL) {
+		die("error opening /proc/mounts");
+	}
+
+	while ((mnt = getmntent(fp)) != NULL) {
+		if (strcmp(device, mnt->mnt_fsname) == 0) {
+			printf("cannot create filesystem: ");
+			printf("%s appears to be mounted\n", device);
+			break;
+		}
+	}
+
+	endmntent(fp);
+
+	if (fp != NULL) {
+		exit(EXIT_FAILURE);
+	}
+
+	return;
+}
+
+/**
  * print_results - print out summary information
  * @sdp: the command line
  *
@@ -357,6 +390,8 @@
 
 	verify_arguments(sdp);
 
+	check_mount(sdp->device_name);
+
 	sdp->device_fd = open(sdp->device_name, O_RDWR);
 	if (sdp->device_fd < 0)
 		die("can't open device %s: %s\n",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]