Bug fixes for 5.18:
- Fix an incorrect free space calculation in xfs_reserve_blocks that
  could lead to a request for free blocks that will never succeed.
- Fix a hang in xfs_reserve_blocks caused by an infinite loop and the
  incorrect free space calculation.
- Fix yet a third problem in xfs_reserve_blocks where multiple racing
  threads can overfill the reserve pool.
- Fix an accounting error that lead to us reporting reserved space as
  "available".
- Fix a race condition during abnormal fs shutdown that could cause UAF
  problems when memory reclaim and log shutdown try to clean up inodes.
- Fix a bug where log shutdown can race with unmount to tear down the
  log, thereby causing UAF errors.
- Disentangle log and filesystem shutdown to reduce confusion.
- Fix some confusion in xfs_trans_commit such that a race between
  transaction commit and filesystem shutdown can cause unlogged dirty
  inode metadata to be committed, thereby corrupting the filesystem.
- Remove a performance optimization in the log as it was discovered that
  certain storage hardware handle async log flushes so poorly as to
  cause serious performance regressions.  Recent restructuring of other
  parts of the logging code mean that no performance benefit is seen on
  hardware that handle it well.