[Cluster-devel] cluster gfs-kernel/src/gfs/mount.c gfs-kernel/ ...
rpeterso at sourceware.org
rpeterso at sourceware.org
Sat Oct 14 20:16:20 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: rpeterso at sourceware.org 2006-10-14 20:16:19
Modified files:
gfs-kernel/src/gfs: mount.c ops_super.c
gfs2/mount : mount.gfs2.c util.c
Log message:
This is the fix for bugzilla bug 210369: acls are not enabled
after remount. The problem was a combination of things, but
mainly due to the gfs mount helper mount.gfs2 not passing the
mount parameters on in the extras string during a remount.
The mount helper was also incorrectly putting some messages
into stdout.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/mount.c.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_super.c.diff?cvsroot=cluster&r1=1.22&r2=1.23
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mount/mount.gfs2.c.diff?cvsroot=cluster&r1=1.18&r2=1.19
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mount/util.c.diff?cvsroot=cluster&r1=1.15&r2=1.16
--- cluster/gfs-kernel/src/gfs/mount.c 2006/07/18 20:48:20 1.14
+++ cluster/gfs-kernel/src/gfs/mount.c 2006/10/14 20:16:15 1.15
@@ -42,7 +42,7 @@
/* If someone preloaded options, use those instead */
spin_lock(&gfs_proc_margs_lock);
- if (gfs_proc_margs) {
+ if (!remount && gfs_proc_margs) {
data = gfs_proc_margs;
gfs_proc_margs = NULL;
}
--- cluster/gfs-kernel/src/gfs/ops_super.c 2006/07/18 20:48:20 1.22
+++ cluster/gfs-kernel/src/gfs/ops_super.c 2006/10/14 20:16:15 1.23
@@ -331,7 +331,7 @@
if (!args)
return -ENOMEM;
- error = gfs_make_args(data, args, FALSE);
+ error = gfs_make_args(data, args, TRUE);
if (error) {
printk("GFS: can't parse remount arguments\n");
goto out;
--- cluster/gfs2/mount/mount.gfs2.c 2006/10/13 20:01:19 1.18
+++ cluster/gfs2/mount/mount.gfs2.c 2006/10/14 20:16:19 1.19
@@ -120,8 +120,10 @@
int rv = 0;
if (!strcmp(proto, "lock_dlm")) {
- if (mo->flags & MS_REMOUNT)
+ if (mo->flags & MS_REMOUNT) {
rv = lock_dlm_remount(mo, sb);
+ strncpy(mo->extra_plus, mo->extra, PATH_MAX);
+ }
else
rv = lock_dlm_join(mo, sb);
} else
--- cluster/gfs2/mount/util.c 2006/10/13 22:01:40 1.15
+++ cluster/gfs2/mount/util.c 2006/10/14 20:16:19 1.16
@@ -11,7 +11,7 @@
extern char *prog_name;
extern char *fsname;
extern int verbose;
-static int gfs_controld_fd;
+static int gfs_controld_fd = -1;
#define LOCK_DLM_SOCK_PATH "gfs_controld_sock" /* FIXME: use a header */
#define MAXLINE 256 /* size of messages with gfs_controld */
@@ -385,11 +385,11 @@
i = 0;
do {
fd = gfs_controld_connect();
- if (fd < 0) {
+ if (fd <= 0) {
warn("waiting for gfs_controld to start");
sleep(1);
}
- } while (fd < 0 && ++i < 10);
+ } while (fd <= 0 && ++i < 10);
/* FIXME: should we start the daemon here? */
if (fd < 0) {
@@ -521,6 +521,8 @@
int rv;
char buf[MAXLINE];
+ if(gfs_controld_fd <= 0) /* if we didn't do the lock_dlm_join */
+ return; /* forget the rest */
memset(buf, 0, sizeof(buf));
rv = snprintf(buf, MAXLINE, "mount_result %s %s %d", mo->dir, fsname,
result);
@@ -548,13 +550,13 @@
i = 0;
do {
fd = gfs_controld_connect();
- if (fd < 0) {
+ if (fd <= 0) {
warn("waiting for gfs_controld to start");
sleep(1);
}
- } while (!fd && ++i < 10);
+ } while (fd <= 0 && ++i < 10);
- if (fd < 0) {
+ if (fd <= 0) {
warn("gfs_controld not running");
rv = -1;
goto out;
@@ -627,13 +629,14 @@
i = 0;
do {
- sleep(1);
fd = gfs_controld_connect();
- if (!fd)
+ if (fd <= 0) {
warn("waiting for gfs_controld to start");
- } while (!fd && ++i < 10);
+ sleep(1);
+ }
+ } while (fd <= 0 && ++i < 10);
- if (!fd) {
+ if (fd <= 0) {
warn("gfs_controld not running");
rv = -1;
goto out;
More information about the Cluster-devel
mailing list