[BACK]Return to pquota-enable CVS log [TXT][DIR] Up to [Development] / linux-2.4-xfs / split-patches

File: [Development] / linux-2.4-xfs / split-patches / pquota-enable (download)

Revision 1.1, Mon Jun 6 15:02:13 2005 UTC (12 years, 4 months ago) by nathans.longdrop.melbourne.sgi.com
Branch: MAIN

Merge 2.4 project quota enabling patch.
Merge of 2.4.x-xfs-melb:linux:22824a by kenmcd.

Index: 2.4.x-xfs/fs/quota.c
===================================================================
--- 2.4.x-xfs.orig/fs/quota.c	2004-10-19 10:26:51.000000000 +1000
+++ 2.4.x-xfs/fs/quota.c	2005-06-06 12:41:17.369225868 +1000
@@ -16,13 +16,12 @@
 
 struct dqstats dqstats;
 
+/* Macros for short-circuiting the compatibility tests */
+#define NEW_COMMAND(c) ((c) & (0x80 << 16))
+
 /* Check validity of quotactl */
 static int check_quotactl_valid(struct super_block *sb, int type, int cmd, qid_t id)
 {
-	if (type >= MAXQUOTAS)
-		return -EINVAL;
-	if (!sb && cmd != Q_SYNC)
-		return -ENODEV;
 	/* Is operation supported? */
 	if (sb && !sb->s_qcop)
 		return -ENOSYS;
@@ -447,10 +446,6 @@
 	return 0;
 }
 
-/* Macros for short-circuiting the compatibility tests */
-#define NEW_COMMAND(c) ((c) & (0x80 << 16))
-#define XQM_COMMAND(c) (((c) & ('X' << 8)) == ('X' << 8))
-
 /*
  * This is the system call interface. This communicates with
  * the user-level programs. Currently this only supports diskquota
@@ -472,7 +467,17 @@
 		sb = NULL;
 		goto out;
 	}
-	if (!NEW_COMMAND(cmds) && !XQM_COMMAND(cmds)) {
+	if (NEW_COMMAND(cmds)) {
+		if (type >= MAXQUOTAS)
+			return -EINVAL;
+		if (!sb && cmds != Q_SYNC)
+			return -ENODEV;
+	} else if (XQM_COMMAND(cmds)) {
+		if (type >= XQM_MAXQUOTAS)
+			return -EINVAL;
+		if (!sb)
+			return -ENODEV;
+	} else {
 		if ((ret = check_compat_quotactl_valid(sb, type, cmds, id)) < 0)
 			goto out;
 		ret = do_compat_quotactl(sb, type, cmds, id, addr);
Index: 2.4.x-xfs/include/linux/dqblk_xfs.h
===================================================================
--- 2.4.x-xfs.orig/include/linux/dqblk_xfs.h	2005-01-20 16:07:41.000000000 +1100
+++ 2.4.x-xfs/include/linux/dqblk_xfs.h	2005-06-06 12:41:17.370202431 +1000
@@ -28,6 +28,13 @@
  */
 
 #define XQM_CMD(x)	(('X'<<8)+(x))	/* note: forms first QCMD argument */
+#define XQM_COMMAND(x)	(((x) & (0xff<<8)) == ('X'<<8))	/* test if for XFS */
+
+#define XQM_USRQUOTA	0	/* system call user quota type */
+#define XQM_GRPQUOTA	1	/* system call group quota type */
+#define XQM_PRJQUOTA	2	/* system call project quota type */
+#define XQM_MAXQUOTAS	3
+
 #define Q_XQUOTAON	XQM_CMD(1)	/* enable accounting/enforcement */
 #define Q_XQUOTAOFF	XQM_CMD(2)	/* disable accounting/enforcement */
 #define Q_XGETQUOTA	XQM_CMD(3)	/* get disk limits and usage */