1. 19 May, 2020 1 commit
    • Brian Foster's avatar
      xfs: don't fail verifier on empty attr3 leaf block · f28cef9e
      Brian Foster authored
      The attr fork can transition from shortform to leaf format while
      empty if the first xattr doesn't fit in shortform. While this empty
      leaf block state is intended to be transient, it is technically not
      due to the transactional implementation of the xattr set operation.
      
      We historically have a couple of bandaids to work around this
      problem. The first is to hold the buffer after the format conversion
      to prevent premature writeback of the empty leaf buffer and the
      second is to bypass the xattr count check in the verifier during
      recovery. The latter assumes that the xattr set is also in the log
      and will be recovered into the buffer soon after the empty leaf
      buffer is reconstructed. This is not guaranteed, however.
      
      If the filesystem crashes after the format conversion but before the
      xattr set that induced it, only the format conversion may exist in
      the log. When recovered, this creates a latent corrupted state on
      the inode as any subsequent attempts to read the buffer fail due to
      verifier failure. This includes further attempts to set xattrs on
      the inode or attempts to destroy the attr fork, which prevents the
      inode from ever being removed from the unlinked list.
      
      To avoid this condition, accept that an empty attr leaf block is a
      valid state and remove the count check from the verifier. This means
      that on rare occasions an attr fork might exist in an unexpected
      state, but is otherwise consistent and functional. Note that we
      retain the logic to avoid racing with metadata writeback to reduce
      the window where this can occur.
      Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
      Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      f28cef9e
  2. 13 May, 2020 3 commits
  3. 08 May, 2020 27 commits
  4. 07 May, 2020 9 commits