From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre Carrier Date: Mon, 23 Aug 2010 13:29:55 +0100 Subject: [Cluster-devel] [PATCH] Handle multiple filesystems on a single mountpoint In-Reply-To: <1282566595-2300-1-git-send-email-pcarrier@redhat.com> References: <1282566595-2300-1-git-send-email-pcarrier@redhat.com> Message-ID: <1282566595-2300-2-git-send-email-pcarrier@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello, Here is a patch against gfs2-utils.git Use-case: When both a GFS and a GFS2 filesystems are mounted on the same mountpoint, # umount /example /sbin/umount.gfs2: /example is not a gfs2 filesystem /sbin/umount.gfs: /example is not a gfs filesystem /sbin/umount.gfs2: /example is not a gfs2 filesystem Best regards, -- Pierre --- gfs2/mount/util.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gfs2/mount/util.c b/gfs2/mount/util.c index 42cd8f0..06bdd2c 100644 --- a/gfs2/mount/util.c +++ b/gfs2/mount/util.c @@ -221,6 +221,7 @@ void read_proc_mounts(struct mount_options *mo) char save_opts[PATH_MAX]; char save_device[PATH_MAX]; int found = 0; + unsigned int unexpected_type_found = 0; struct stat st_mo_dev, st_mounts_dev; file = fopen("/proc/mounts", "r"); @@ -244,8 +245,10 @@ void read_proc_mounts(struct mount_options *mo) if (st_mo_dev.st_rdev != st_mounts_dev.st_rdev) continue; } - if (strcmp(type, fsname)) - die("%s is not a %s filesystem\n", mo->dir, fsname); + if (strcmp(type, fsname)) { + unexpected_type_found++; + continue; + } /* when there is an input dev specified (mount), we should get only one matching line; when there is no input dev specified @@ -256,6 +259,13 @@ void read_proc_mounts(struct mount_options *mo) strncpy(save_line, line, PATH_MAX); found = 1; } + + if(!found) { + if(unexpected_type_found) + die("Only %u non-%s filesystems found on %s\n", + unexpected_type_found, fsname, mo->dir); + die("%s is not a %s filesystem\n", mo->dir, fsname); + } fclose(file); -- 1.7.2.1