From mboxrd@z Thu Jan 1 00:00:00 1970 From: teigland@sourceware.org Date: 26 Apr 2007 18:45:44 -0000 Subject: [Cluster-devel] cluster/gfs2/mount mount.gfs2.c util.h Message-ID: <20070426184544.14519.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 Branch: RHEL5 Changes by: teigland at sourceware.org 2007-04-26 19:45:44 Modified files: gfs2/mount : mount.gfs2.c util.h Log message: Check right away if the kernel has gfs/gfs2 support by looking in /sys/fs/. This results in a user-friendly error message instead of something like "gfs_controld error 19". Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mount/mount.gfs2.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.1&r2=1.20.2.2 http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mount/util.h.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.10&r2=1.10.2.1 --- cluster/gfs2/mount/mount.gfs2.c 2007/04/23 19:18:17 1.20.2.1 +++ cluster/gfs2/mount/mount.gfs2.c 2007/04/26 18:45:44 1.20.2.2 @@ -150,6 +150,25 @@ lock_dlm_leave(mo, sb, mnterr); } +static void check_sys_fs(char *fsname) +{ + DIR *d; + struct dirent *de; + + d = opendir("/sys/fs/"); + if (!d) + die("no /sys/fs/ directory found: %d\n", errno); + + while ((de = readdir(d))) { + if (strnlen(fsname, 5) != strnlen(de->d_name, 5)) + continue; + if (!strncmp(fsname, de->d_name, strnlen(fsname, 5))) + return; + } + die("fs type \"%s\" not found in /sys/fs/, is the module loaded?\n", + fsname); +} + int main(int argc, char **argv) { struct mount_options mo; @@ -172,6 +191,8 @@ exit(EXIT_SUCCESS); } + check_sys_fs(fsname); + read_options(argc, argv, &mo); check_options(&mo); get_sb(mo.dev, &sb); --- cluster/gfs2/mount/util.h 2006/10/13 20:01:19 1.10 +++ cluster/gfs2/mount/util.h 2007/04/26 18:45:44 1.10.2.1 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include