[Cluster-devel] cluster/group/gfs_controld lock_dlm.h recover.c

teigland at sourceware.org teigland at sourceware.org
Tue Sep 4 19:22:53 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	teigland at sourceware.org	2007-09-04 19:22:52

Modified files:
	group/gfs_controld: lock_dlm.h recover.c 

Log message:
	Reject mount attempts on an fs that's still in the process of unmounting.
	This regressed 8 months ago due to the bz 218560 changes.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/lock_dlm.h.diff?cvsroot=cluster&r1=1.28&r2=1.29
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/recover.c.diff?cvsroot=cluster&r1=1.32&r2=1.33

--- cluster/group/gfs_controld/lock_dlm.h	2007/06/12 20:04:41	1.28
+++ cluster/group/gfs_controld/lock_dlm.h	2007/09/04 19:22:52	1.29
@@ -164,6 +164,7 @@
 	int			low_nodeid;
 	int			master_nodeid;
 	int			save_plocks;
+	int			reject_mounts;
 
 	uint64_t		cp_handle;
 	time_t			last_checkpoint_time;
--- cluster/group/gfs_controld/recover.c	2007/07/11 17:01:23	1.32
+++ cluster/group/gfs_controld/recover.c	2007/09/04 19:22:52	1.33
@@ -1617,7 +1617,13 @@
 
 	mg = find_mg(name);
 	if (mg) {
-		rv = add_another_mountpoint(mg, dir, dev, ci);
+		if (mg->reject_mounts) {
+			/* fs is being unmounted */
+			rv = -ESTALE;
+			log_error("mount: reject mount due to unmount");
+		} else {
+			rv = add_another_mountpoint(mg, dir, dev, ci);
+		}
 		goto out;
 	}
 
@@ -2030,6 +2036,7 @@
 	}
 
  out:
+	mg->reject_mounts = 1;
 	group_leave(gh, mg->name);
 	return 0;
 }




More information about the Cluster-devel mailing list