linux/fs/xfs/libxfs
Eric Sandeen e6fc6fcf44 xfs: don't call xfs_sb_quota_from_disk twice
Source xfsprogs commit: ee3754254e8c186c99b6cdd4d59f741759d04acb

Kernel commit 5ef828c4 ("xfs: avoid false quotacheck after unclean
shutdown") made xfs_sb_from_disk() also call xfs_sb_quota_from_disk
by default.

However, when this was merged to libxfs, existing separate
calls to libxfs_sb_quota_from_disk remained, and calling it
twice in a row on a V4 superblock leads to issues, because:

        if (sbp->sb_qflags & XFS_PQUOTA_ACCT)  {
...
                sbp->sb_pquotino = sbp->sb_gquotino;
                sbp->sb_gquotino = NULLFSINO;

and after the second call, we have set both pquotino and gquotino
to NULLFSINO.

Fix this by making it safe to call twice, and also remove the extra
calls to libxfs_sb_quota_from_disk.

This is only spotted when running xfstests with "-m crc=0" because
the sb_from_disk change came about after V5 became default, and
the above behavior only exists on a V4 superblock.

Reported-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2016-11-08 11:58:55 +11:00
..
xfs_ag_resv.c xfs: simulate per-AG reservations being critically low 2016-10-05 16:26:31 -07:00
xfs_ag_resv.h xfs: set up per-AG free space reservations 2016-09-19 10:30:52 +10:00
xfs_alloc_btree.c xfs: remove the get*keys and update_keys btree ops pointers 2016-08-03 12:22:12 +10:00
xfs_alloc_btree.h
xfs_alloc.c xfs: reserve AG space for the refcount btree root 2016-10-03 09:11:24 -07:00
xfs_alloc.h Merge branch 'xfs-4.9-log-recovery-fixes' into for-next 2016-10-03 09:56:28 +11:00
xfs_attr_leaf.c xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_attr_leaf.h libxfs: fix xfs_attr_shortform_bytesfit declaration 2016-11-08 11:56:20 +11:00
xfs_attr_remote.c xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_attr_remote.h
xfs_attr_sf.h xfs: move struct xfs_attr_shortform to xfs_da_format.h 2016-02-08 15:00:01 +11:00
xfs_attr.c xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_bit.c libxfs: Optimize the loop for xfs_bitmap_empty 2016-01-04 16:10:19 +11:00
xfs_bit.h
xfs_bmap_btree.c xfs: try other AGs to allocate a BMBT block 2016-10-05 16:26:28 -07:00
xfs_bmap_btree.h
xfs_bmap.c xfs: remove xfs_bunmapi_cow 2016-10-20 15:54:59 +11:00
xfs_bmap.h xfs: remove xfs_bunmapi_cow 2016-10-20 15:54:59 +11:00
xfs_btree.c xfs: add some 'static' annotations 2016-10-20 15:42:30 +11:00
xfs_btree.h xfs: define the on-disk refcount btree format 2016-10-03 09:11:18 -07:00
xfs_cksum.h
xfs_da_btree.c xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_da_btree.h xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_da_format.c xfs: kill xfs_dir2_inou_t 2016-07-20 11:48:31 +10:00
xfs_da_format.h xfs: fix attr shortform structure alignment on cris 2016-08-03 10:59:42 +10:00
xfs_defer.c xfs: defer should abort intent items if the trans roll fails 2016-10-24 14:21:18 +11:00
xfs_defer.h xfs: implement deferred bmbt map/unmap operations 2016-10-04 11:05:44 -07:00
xfs_dir2_block.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_data.c libxfs: clean up _dir2_data_freescan 2016-11-08 11:56:51 +11:00
xfs_dir2_leaf.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_dir2_node.c xfs: always set rvalp in xfs_dir2_node_trim_free 2016-03-15 11:44:18 +11:00
xfs_dir2_priv.h xfs: move type conversion functions to xfs_dir.h 2014-12-04 09:43:17 +11:00
xfs_dir2_sf.c xfs: kill xfs_dir2_inou_t 2016-07-20 11:48:31 +10:00
xfs_dir2.c xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_dir2.h libxfs: clean up _dir2_data_freescan 2016-11-08 11:56:51 +11:00
xfs_dquot_buf.c libxfs: clean up _calc_dquots_per_chunk 2016-10-20 15:46:18 +11:00
xfs_format.h libxfs: v3 inodes are only valid on crc-enabled filesystems 2016-10-20 15:48:38 +11:00
xfs_fs.h xfs: create a separate cow extent size hint for the allocator 2016-10-05 16:26:26 -07:00
xfs_ialloc_btree.c xfs: set up per-AG free space reservations 2016-09-19 10:30:52 +10:00
xfs_ialloc_btree.h xfs: allocate sparse inode chunks on full chunk allocation failure 2015-05-29 09:18:32 +10:00
xfs_ialloc.c libxfs: convert ushort to unsigned short 2016-11-08 11:55:48 +11:00
xfs_ialloc.h xfs: rename flist/free_list to dfops 2016-08-03 11:19:29 +10:00
xfs_inode_buf.c libxfs: synchronize dinode_verify with userspace 2016-11-08 11:56:06 +11:00
xfs_inode_buf.h libxfs: convert ushort to unsigned short 2016-11-08 11:55:48 +11:00
xfs_inode_fork.c xfs: introduce the CoW fork 2016-10-04 18:06:40 -07:00
xfs_inode_fork.h xfs: introduce the CoW fork 2016-10-04 18:06:40 -07:00
xfs_log_format.h libxfs: convert ushort to unsigned short 2016-11-08 11:55:48 +11:00
xfs_log_recover.h libxfs: convert ushort to unsigned short 2016-11-08 11:55:48 +11:00
xfs_log_rlimit.c xfs: move most of xfs_sb.h to xfs_format.h 2014-11-28 14:27:09 +11:00
xfs_quota_defs.h xfs: wire up Q_XGETNEXTQUOTA / get_nextdqblk 2016-02-08 11:27:38 +11:00
xfs_refcount_btree.c xfs: preallocate blocks for worst-case btree expansion 2016-10-05 16:26:27 -07:00
xfs_refcount_btree.h xfs: preallocate blocks for worst-case btree expansion 2016-10-05 16:26:27 -07:00
xfs_refcount.c xfs: rework refcount cow recovery error handling 2016-10-10 17:23:07 +11:00
xfs_refcount.h xfs: store in-progress CoW allocations in the refcount btree 2016-10-05 16:26:05 -07:00
xfs_rmap_btree.c xfs: preallocate blocks for worst-case btree expansion 2016-10-05 16:26:27 -07:00
xfs_rmap_btree.h xfs: preallocate blocks for worst-case btree expansion 2016-10-05 16:26:27 -07:00
xfs_rmap.c xfs: convert unwritten status of reverse mappings for shared files 2016-10-05 16:26:29 -07:00
xfs_rmap.h xfs: use interval query for rmap alloc operations on shared files 2016-10-05 16:26:29 -07:00
xfs_rtbitmap.c libxfs: fix whitespace problems 2016-11-08 11:56:13 +11:00
xfs_sb.c xfs: don't call xfs_sb_quota_from_disk twice 2016-11-08 11:58:55 +11:00
xfs_sb.h xfs: remove unused function definitions 2016-02-08 14:58:07 +11:00
xfs_shared.h xfs: define the on-disk refcount btree format 2016-10-03 09:11:18 -07:00
xfs_symlink_remote.c xfs: print name of verifier if it fails 2016-01-04 16:10:19 +11:00
xfs_trans_resv.c xfs: increase log reservations for reflink 2016-10-05 16:26:29 -07:00
xfs_trans_resv.h xfs: increase log reservations for reflink 2016-10-05 16:26:29 -07:00
xfs_trans_space.h xfs: implement swapext for rmap filesystems 2016-10-05 16:26:32 -07:00
xfs_types.h xfs: introduce the CoW fork 2016-10-04 18:06:40 -07:00