mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
xfs: Initialize all quota inodes to be NULLFSINO
mkfs doesn't initialize the quota inodes to NULLFSINO as it does for the other internal inodes. This leads to two in-core values (0 and NULLFSINO) to be checked against, to make sure if a quota inode is valid. Solve that problem by initializing the in-core values of all quotaino values to NULLFSINO if they are 0 in the disk. Note that these values are not written back to on-disk superblock unless some quota is enabled on the filesystem. Even in that case sb_pquotino is written to disk only if the on-disk superblock supports pquotino Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com> Reviewed-by: Ben Myers <bpm@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
parent
297aa63769
commit
0102629776
@ -572,6 +572,24 @@ out_unwind:
|
||||
static void
|
||||
xfs_sb_quota_from_disk(struct xfs_sb *sbp)
|
||||
{
|
||||
/*
|
||||
* older mkfs doesn't initialize quota inodes to NULLFSINO. This
|
||||
* leads to in-core values having two different values for a quota
|
||||
* inode to be invalid: 0 and NULLFSINO. Change it to a single value
|
||||
* NULLFSINO.
|
||||
*
|
||||
* Note that this change affect only the in-core values. These
|
||||
* values are not written back to disk unless any quota information
|
||||
* is written to the disk. Even in that case, sb_pquotino field is
|
||||
* not written to disk unless the superblock supports pquotino.
|
||||
*/
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user