From mboxrd@z Thu Jan 1 00:00:00 1970 From: rohara@sourceware.org Date: 10 Jul 2007 18:01:05 -0000 Subject: [Cluster-devel] cluster/gfs/gfs_mkfs main.c Message-ID: <20070710180105.15950.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: rohara at sourceware.org 2007-07-10 18:01:05 Modified files: gfs/gfs_mkfs : main.c Log message: BZ 240584 - Check to see if device is mounted before creating filesystem. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs/gfs_mkfs/main.c.diff?cvsroot=cluster&r1=1.6&r2=1.7 --- cluster/gfs/gfs_mkfs/main.c 2006/11/29 17:25:44 1.6 +++ cluster/gfs/gfs_mkfs/main.c 2007/07/10 18:01:01 1.7 @@ -22,6 +22,7 @@ #include #include #include +#include #include "global.h" #include "gfs_ondisk.h" @@ -243,6 +244,39 @@ /** + * check_mount - + * @ + * + */ + +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 * @comline: the command line * @@ -307,6 +341,8 @@ decode_arguments(argc, argv, &comline); + check_mount(comline.device); + if (!comline.expert) { char buf[256]; if (test_locking(comline.lockproto, comline.locktable, buf, 256))