From mboxrd@z Thu Jan 1 00:00:00 1970 From: adas@sourceware.org Date: 23 Oct 2006 20:15:29 -0000 Subject: [Cluster-devel] cluster/gfs-kernel/src/gfs incore.h mount.c op ... Message-ID: <20061023201529.12026.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 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_spin); + gt->gt_quota_enforce = 0; + gt->gt_quota_account = 0; + spin_unlock(>->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_spin); + gt->gt_quota_enforce = 1; + gt->gt_quota_account = 1; + spin_unlock(>->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");