All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jan Kara <jack@suse.cz>
Cc: linux-fsdevel@vger.kernel.org
Subject: [PATCH] quota-tools: add gfs2 support
Date: Wed, 5 May 2010 00:09:10 +0200	[thread overview]
Message-ID: <20100504220910.GA319@lst.de> (raw)

GFS2 implements the XFS interface for setting and reporting the quota
information, and only allows state changes via remount.

Signed-off-by: Christoph Hellwig <hch@lst.de>

Index: quota-tools/mntopt.h
===================================================================
--- quota-tools.orig/mntopt.h	2010-05-04 22:02:07.000000000 +0000
+++ quota-tools/mntopt.h	2010-05-04 22:02:45.000000000 +0000
@@ -18,6 +18,7 @@
 #define MNTTYPE_NFS4		"nfs4"	/* NFSv4 filesystem */
 #define MNTTYPE_MPFS		"mpfs"  /* EMC Celerra MPFS filesystem */
 #define MNTTYPE_OCFS2		"ocfs2"	/* Oracle Cluster filesystem */
+#define MNTTYPE_GFS2		"gfs2"	/* Red Hat Global filesystem 2 */
 
 /* mount options */
 #define MNTOPT_NOQUOTA		"noquota"	/* don't enforce quota */
Index: quota-tools/quotacheck.c
===================================================================
--- quota-tools.orig/quotacheck.c	2010-05-04 22:02:07.000000000 +0000
+++ quota-tools/quotacheck.c	2010-05-04 22:02:45.000000000 +0000
@@ -1049,7 +1049,9 @@ static void check_all(void)
 	while ((mnt = get_next_mount())) {
 		if (flags & FL_ALL && flags & FL_NOROOT && !strcmp(mnt->mnt_dir, "/"))
 			continue;
-		if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) || nfs_fstype(mnt->mnt_type) ||
+		if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) ||
+		    !strcmp(mnt->mnt_type, MNTTYPE_GFS2) ||
+		    nfs_fstype(mnt->mnt_type) ||
 		    meta_qf_fstype(mnt->mnt_type)) {
 			debug(FL_DEBUG | FL_VERBOSE, _("Skipping %s [%s]\n"), mnt->mnt_fsname, mnt->mnt_dir);
 			continue;
Index: quota-tools/quotaio.c
===================================================================
--- quota-tools.orig/quotaio.c	2010-05-04 22:02:07.000000000 +0000
+++ quota-tools/quotaio.c	2010-05-04 22:02:45.000000000 +0000
@@ -78,7 +78,8 @@ struct quota_handle *init_io(struct mnte
 		goto out_handle;
 	}
 
-	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) {	/* XFS filesystem? */
+	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) ||	/* XFS filesystem? */
+	    !strcmp(mnt->mnt_type, MNTTYPE_GFS2)) {	/* XFS filesystem? */
 		if (fmt != -1 && fmt != QF_XFS) {	/* User wanted some other format? */
 			errstr(_("Only XFS quota format is allowed on XFS filesystem.\n"));
 			goto out_handle;
Index: quota-tools/quotaon.c
===================================================================
--- quota-tools.orig/quotaon.c	2010-05-04 22:02:07.000000000 +0000
+++ quota-tools/quotaon.c	2010-05-04 22:02:45.000000000 +0000
@@ -273,7 +273,10 @@ static int newstate(struct mntent *mnt,
 	if (flags & FL_ALL)
 		sflags |= STATEFLAG_ALL;
 
-	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) {	/* XFS filesystem has special handling... */
+	if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2)) {
+		errstr(_("Cannot change state of GFS2 quota.\n"));
+		return 1;
+	} else if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) {	/* XFS filesystem has special handling... */
 		if (!kern_qfmt_supp(QF_XFS)) {
 			errstr(_("Cannot change state of XFS quota. It's not compiled in kernel.\n"));
 			return 1;
@@ -329,7 +332,8 @@ static int print_state(struct mntent *mn
 {
 	int on = 0;
 
-	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS)) {
+	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) ||
+	    !strcmp(mnt->mnt_type, MNTTYPE_GFS2)) {
 		if (kern_qfmt_supp(QF_XFS))
 			on = kern_quota_on(mnt->mnt_fsname, type, QF_XFS) != -1;
 	}
Index: quota-tools/quotasys.c
===================================================================
--- quota-tools.orig/quotasys.c	2010-05-04 22:02:07.000000000 +0000
+++ quota-tools/quotasys.c	2010-05-04 22:02:45.000000000 +0000
@@ -91,7 +91,8 @@ static int correct_fstype(char *type)
 		    !strcmp(type, MNTTYPE_NFS) ||
 		    !strcmp(type, MNTTYPE_NFS4) ||
 		    !strcmp(type, MNTTYPE_OCFS2) ||
-		    !strcmp(type, MNTTYPE_MPFS)) {
+		    !strcmp(type, MNTTYPE_MPFS) ||
+		    !strcmp(type, MNTTYPE_GFS2)) {
 			free(mtype);
 			return 1;
 		}
@@ -495,6 +496,8 @@ int hasquota(struct mntent *mnt, int typ
 	if (!correct_fstype(mnt->mnt_type) || hasmntopt(mnt, MNTOPT_NOQUOTA))
 		return 0;
 	
+	if (!strcmp(mnt->mnt_type, MNTTYPE_GFS2))
+		return 1;
 	if (!strcmp(mnt->mnt_type, MNTTYPE_XFS))
 		return hasxfsquota(mnt, type, flags);
 	if (nfs_fstype(mnt->mnt_type))	/* NFS always has quota or better there is no good way how to detect it */
@@ -652,11 +655,14 @@ add_entry:
 					goto add_entry;
 				break;
 			case QF_XFS:
-				if (!strcmp(mnt->mnt_type, MNTTYPE_XFS))
+				if (!strcmp(mnt->mnt_type, MNTTYPE_XFS) ||
+				    !strcmp(mnt->mnt_type, MNTTYPE_GFS2))
 					goto add_entry;
 				break;
 			default:
-				if (strcmp(mnt->mnt_type, MNTTYPE_XFS) && !nfs_fstype(mnt->mnt_type))
+				if (strcmp(mnt->mnt_type, MNTTYPE_XFS) &&
+				    strcmp(mnt->mnt_type, MNTTYPE_GFS2) &&
+				    !nfs_fstype(mnt->mnt_type))
 					goto add_entry;
 				break;
 			}

             reply	other threads:[~2010-05-04 22:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-04 22:09 Christoph Hellwig [this message]
2010-05-05 14:14 ` [PATCH] quota-tools: add gfs2 support Steven Whitehouse
2010-05-05 15:17 ` Jan Kara
2010-05-07 14:40 ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100504220910.GA319@lst.de \
    --to=hch@lst.de \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.