xfs
[Top] [All Lists]

[PATCH] xfs: Initialize all quota inodes to be NULLFSINO

To: XFS mailing list <xfs@xxxxxxxxxxx>
Subject: [PATCH] xfs: Initialize all quota inodes to be NULLFSINO
From: Chandra Seetharaman <sekharan@xxxxxxxxxx>
Date: Thu, 11 Jul 2013 20:47:45 -0500
Delivered-to: xfs@xxxxxxxxxxx
Organization: IBM
Reply-to: sekharan@xxxxxxxxxx
mkfs doesn't initialize the quota inodes to NULLFSINO as it
does for the other internal inodes. This leads to check for two
values (0 and NULLFSINO) to make sure if a quota inode is
valid.

Solve that problem by initializing the values to NULLFSINO
if they are 0.

Note that these values are not written back to on-disk
superblock unless some quota is enabled on the filesystem.

Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx>
---
 fs/xfs/xfs_mount.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2b0ba35..8b95933 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -572,6 +572,18 @@ out_unwind:
 static void
 xfs_sb_quota_from_disk(struct xfs_sb *sbp)
 {
+       /*
+        * older mkfs doesn't initialize quota inodes to NULLFSINO,
+        * which leads to two values for a quota inode to be invalid:
+        * 0 and NULLFSINO. Fix it.
+        */
+       if (sbp->sb_uquotino == 0)
+               sbp->sb_uquotino = NULLFSINO;
+       if (sbp->sb_gquotino == 0)
+               sbp->sb_gquotino = NULLFSINO;
+       if (sbp->sb_pquotino == 0)
+               sbp->sb_pquotino = NULLFSINO;
+
        if (sbp->sb_qflags & XFS_OQUOTA_ENFD)
                sbp->sb_qflags |= (sbp->sb_qflags & XFS_PQUOTA_ACCT) ?
                                        XFS_PQUOTA_ENFD : XFS_GQUOTA_ENFD;
-- 
1.7.1



<Prev in Thread] Current Thread [Next in Thread>