[Cluster-devel] cluster/gfs-kernel/src/gfs incore.h mount.c op ...

adas at sourceware.org adas at sourceware.org
Mon Oct 23 20:15:29 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	adas at sourceware.org	2006-10-23 20:15:28

Modified files:
	gfs-kernel/src/gfs: incore.h mount.c ops_fstype.c ops_super.c 

Log message:
	Adding Josef's noquota mount option for GFS1 in RHEL5. Original bz 205285

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/incore.h.diff?cvsroot=cluster&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/mount.c.diff?cvsroot=cluster&r1=1.15&r2=1.16
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_fstype.c.diff?cvsroot=cluster&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs-kernel/src/gfs/ops_super.c.diff?cvsroot=cluster&r1=1.23&r2=1.24

--- cluster/gfs-kernel/src/gfs/incore.h	2006/09/13 20:07:38	1.29
+++ cluster/gfs-kernel/src/gfs/incore.h	2006/10/23 20:15:28	1.30
@@ -855,6 +855,7 @@
 				       (more daemons => faster cleanup)  */
 	int ar_posix_acls; /* Enable posix acls */
 	int ar_suiddir; /* suiddir support */
+	int ar_noquota; /* Turn off quota support */
 };
 
 struct gfs_tune {
--- cluster/gfs-kernel/src/gfs/mount.c	2006/10/14 20:16:15	1.15
+++ cluster/gfs-kernel/src/gfs/mount.c	2006/10/23 20:15:28	1.16
@@ -153,6 +153,9 @@
 		else if (!strcmp(x, "suiddir"))
 			args->ar_suiddir = TRUE;
 
+		else if (!strcmp(x, "noquota"))
+			args->ar_noquota = TRUE;
+
 		/*  Unknown  */
 
 		else {
--- cluster/gfs-kernel/src/gfs/ops_fstype.c	2006/08/10 14:52:20	1.27
+++ cluster/gfs-kernel/src/gfs/ops_fstype.c	2006/10/23 20:15:28	1.28
@@ -612,6 +612,14 @@
 
 	init_vfs(sb, SDF_NOATIME);
 
+	/*  Turn off quota stuff if we get the noquota mount option, don't 
+	    need to grab the sd_tune lock here since its before anything 
+	    touches the sd_tune values */
+	if (sdp->sd_args.ar_noquota) {
+		sdp->sd_tune.gt_quota_enforce = 0;
+		sdp->sd_tune.gt_quota_account = 0;
+	}
+
 	/*  Set up the buffer cache and fill in some fake block size values
 	   to allow us to read-in the on-disk superblock.  */
 
--- cluster/gfs-kernel/src/gfs/ops_super.c	2006/10/14 20:16:15	1.23
+++ cluster/gfs-kernel/src/gfs/ops_super.c	2006/10/23 20:15:28	1.24
@@ -322,6 +322,7 @@
 gfs_remount_fs(struct super_block *sb, int *flags, char *data)
 {
 	struct gfs_sbd *sdp = get_v2sdp(sb);
+	struct gfs_tune *gt = &sdp->sd_tune;
 	int error = 0;
 	struct gfs_args *args;
 
@@ -362,6 +363,25 @@
 		}
 	}
 
+	if (args->ar_noquota) {
+		if (sdp->sd_args.ar_noquota == FALSE)
+			printk("GFS: remounting without quota\n");
+		sdp->sd_args.ar_noquota = TRUE;
+		spin_lock(&gt->gt_spin);
+		gt->gt_quota_enforce = 0;
+		gt->gt_quota_account = 0;
+		spin_unlock(&gt->gt_spin);
+	}
+	else {
+		if (sdp->sd_args.ar_noquota == TRUE)
+			printk("GFS: remounting with quota\n");
+		sdp->sd_args.ar_noquota = FALSE;
+		spin_lock(&gt->gt_spin);
+		gt->gt_quota_enforce = 1;
+		gt->gt_quota_account = 1;
+		spin_unlock(&gt->gt_spin);
+	}
+
 	/*  Don't let the VFS update atimes.  GFS handles this itself. */
 	*flags |= MS_NOATIME | MS_NODIRATIME;
 
@@ -444,6 +464,8 @@
 		seq_printf(s, ",num_glockd=%u", args->ar_num_glockd);
 	if (args->ar_posix_acls)
 		seq_printf(s, ",acl");
+	if (args->ar_noquota)
+		seq_printf(s, ",noquota");
 	if (args->ar_suiddir)
 		seq_printf(s, ",suiddir");
 




More information about the Cluster-devel mailing list