xfs
[Top] [All Lists]

[PATCH 1/2] Fix failure of switch on group quota enforcement

To: xfs@xxxxxxxxxxx
Subject: [PATCH 1/2] Fix failure of switch on group quota enforcement
From: Kouta Ooizumi <k-ooizumi@xxxxxxxxxxxxxx>
Date: Fri, 23 Feb 2007 13:22:39 +0900
Sender: xfs-bounce@xxxxxxxxxxx
Hi!

I found that "quotaon -g /mnt" fails to switch on group quota enforcement.

Example:
# mount -t xfs -o gqnoenforce /dev/sda6 /mnt/xfs

# quotaon -g /mnt/xfs
Enabling group quota accounting on /dev/sda6
quotaon: quotactl on /dev/sda6: Invalid argument

The problem is the following:

  fs/xfs/quota/xfs_qm_syscalls.c  455L
        if (((flags & XFS_UQUOTA_ACCT) == 0 &&
            (mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) == 0 &&
            (flags & XFS_UQUOTA_ENFD))
            ||
            ((flags & XFS_PQUOTA_ACCT) == 0 &&                    **
            (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) == 0 &&        **
            (flags & XFS_OQUOTA_ENFD))                            **
            ||                                                    **
            ((flags & XFS_GQUOTA_ACCT) == 0 &&                    **
            (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) == 0 &&        **
            (flags & XFS_OQUOTA_ENFD))) {                         **
                qdprintk("Can't enforce without acct, flags=%x sbflags=%x\n",
                        flags, mp->m_sb.sb_qflags);
                return XFS_ERROR(EINVAL);
        }


XFS_PQUOTA_ACCT and XFS_GQUOTA_ACCT cannot be enabled at the same time.
But this if-statement is not considered it.

Here is the patch.


Signed-off-by: Kouta Ooizumi <k-ooizumi@xxxxxxxxxxxxxx>


--- linux-2.6.20/fs/xfs/quota/xfs_qm_syscalls.c.orig    2007-02-20 
15:41:58.000000000 +0900
+++ linux-2.6.20/fs/xfs/quota/xfs_qm_syscalls.c 2007-02-20 15:43:49.000000000 
+0900
@@ -458,9 +458,7 @@ xfs_qm_scall_quotaon(
            ||
            ((flags & XFS_PQUOTA_ACCT) == 0 &&
            (mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) == 0 &&
-           (flags & XFS_OQUOTA_ENFD))
-           ||
-           ((flags & XFS_GQUOTA_ACCT) == 0 &&
+           (flags & XFS_GQUOTA_ACCT) == 0 &&
            (mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) == 0 &&
            (flags & XFS_OQUOTA_ENFD))) {
                qdprintk("Can't enforce without acct, flags=%x sbflags=%x\n",


<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 1/2] Fix failure of switch on group quota enforcement, Kouta Ooizumi <=