linux-hardened/fs/xfs/libxfs
Eric Sandeen 5ef828c415 xfs: avoid false quotacheck after unclean shutdown
The commit

83e782e xfs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD

added a new function xfs_sb_quota_from_disk() which swaps
on-disk XFS_OQUOTA_* flags for in-core XFS_GQUOTA_* and XFS_PQUOTA_*
flags after the superblock is read.

However, if log recovery is required, the superblock is read again,
and the modified in-core flags are re-read from disk, so we have
XFS_OQUOTA_* flags in memory again.  This causes the
XFS_QM_NEED_QUOTACHECK() test to be true, because the XFS_OQUOTA_CHKD
is still set, and not XFS_GQUOTA_CHKD or XFS_PQUOTA_CHKD.

Change xfs_sb_from_disk to call xfs_sb_quota_from disk and always
convert the disk flags to in-memory flags.

Add a lower-level function which can be called with "false" to
not convert the flags, so that the sb verifier can verify
exactly what was on disk, per Brian Foster's suggestion.

Reported-by: Cyril B. <cbay@excellency.fr>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
2014-08-04 11:35:44 +10:00
..
xfs_ag.h
xfs_alloc.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_alloc.h
xfs_alloc_btree.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_alloc_btree.h
xfs_attr.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_attr_leaf.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_attr_leaf.h
xfs_attr_remote.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_attr_remote.h
xfs_attr_sf.h
xfs_bit.h
xfs_bmap.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_bmap.h
xfs_bmap_btree.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_bmap_btree.h
xfs_btree.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_btree.h
xfs_cksum.h
xfs_da_btree.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_da_btree.h
xfs_da_format.c libxfs: move source files 2014-06-25 14:57:53 +10:00
xfs_da_format.h
xfs_dinode.h
xfs_dir2.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dir2.h
xfs_dir2_block.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dir2_data.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dir2_leaf.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dir2_node.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dir2_priv.h libxfs: move source files 2014-06-25 14:57:53 +10:00
xfs_dir2_sf.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_dquot_buf.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_format.h
xfs_ialloc.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_ialloc.h
xfs_ialloc_btree.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_ialloc_btree.h
xfs_inode_buf.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_inode_buf.h
xfs_inode_fork.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_inode_fork.h
xfs_inum.h
xfs_log_format.h
xfs_log_recover.h
xfs_log_rlimit.c libxfs: move source files 2014-06-25 14:57:53 +10:00
xfs_quota_defs.h
xfs_rtbitmap.c libxfs: move source files 2014-06-25 14:57:53 +10:00
xfs_sb.c xfs: avoid false quotacheck after unclean shutdown 2014-08-04 11:35:44 +10:00
xfs_sb.h
xfs_shared.h
xfs_symlink_remote.c xfs: global error sign conversion 2014-06-25 14:58:08 +10:00
xfs_trans_resv.c libxfs: move source files 2014-06-25 14:57:53 +10:00
xfs_trans_resv.h
xfs_trans_space.h