New code for 5.12:
- Fix an ABBA deadlock when renaming files on overlayfs.
- Make sure that we can't overflow the inode extent counters when adding
  to or removing extents from a file.
- Make directory sgid inheritance work the same way as all the other
  filesystems.
- Don't drain the buffer cache on freeze and ro remount, which should
  reduce the amount of time if read-only workloads are continuing
  during the freeze.
- Fix a bug where symlink size isn't reported to the vfs in ecryptfs.
- Disentangle log cleaning from log covering.  This refactoring sets us
  up for future changes to the log, though for now it simply means that
  we can use covering for freezes, and cleaning becomes something we
  only do at unmount.
- Speed up file fsyncs by reducing iolock cycling.
- Fix delalloc blocks leaking when changing the project id fails because
  of input validation errors in FSSETXATTR.
- Fix oversized quota reservation when converting unwritten extents
  during a DAX write.
- Create a transaction allocation helper function to standardize the
  idiom of allocating a transaction, reserving blocks, locking inodes,
  and reserving quota.  Replace all the open-coded logic for file
  creation, file ownership changes, and file modifications to use them.
- Actually shut down the fs if the incore quota reservations get
  corrupted.
- Fix background block garbage collection scans to not block and to
  actually clean out CoW staging extents properly.
- Run block gc scans when we run low on project quota.
- Use the standardized transaction allocation helpers to make it so that
  ENOSPC and EDQUOT errors during reservation will back out, invoke the
  block gc scanner, and try again.  This is preparation for introducing
  background inode garbage collection in the next cycle.
- Combine speculative post-EOF block garbage collection with speculative
  copy on write block garbage collection.
- Enable multithreaded quotacheck.
- Allow sysadmins to tweak the CPU affinities and maximum concurrency
  levels of quotacheck and background blockgc worker pools.
- Expose the inode btree counter feature in the fs geometry ioctl.
- Cleanups of the growfs code in preparation for starting work on
  filesystem shrinking.
- Fix all the bloody gcc warnings that the maintainer knows about. :P
xfs: fix incorrect root dquot corruption error when switching group/project quota types

While writing up a regression test for broken behavior when a chprojid
request fails, I noticed that we were logging corruption notices about
the root dquot of the group/project quota file at mount time when
testing V4 filesystems.

In commit afeda6000b0c, I was trying to improve ondisk dquot validation
by making sure that when we load an ondisk dquot into memory on behalf
of an incore dquot, the dquot id and type matches.  Unfortunately, I
forgot that V4 filesystems only have two quota files, and can switch
that file between group and project quota types at mount time.  When we
perform that switch, we'll try to load the default quota limits from the
root dquot prior to running quotacheck and log a corruption error when
the types don't match.

This is inconsequential because quotacheck will reset the second quota
file as part of doing the switch, but we shouldn't leave scary messages
in the kernel log.

Fixes: afeda6000b0c ("xfs: validate ondisk/incore dquot flags")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
1 file changed