Merge tag 'xfs-6.6-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Aug 2023 19:34:12 +0000 (12:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Aug 2023 19:34:12 +0000 (12:34 -0700)
Pull xfs updates from Chandan Babu:

 - Chandan Babu will be taking over as the XFS release manager. He has
   reviewed all the patches that are in this branch, though I'm signing
   the branch one last time since I'm still technically maintainer. :P

 - Create a maintainer entry profile for XFS in which we lay out the
   various roles that I have played for many years.  Aside from release
   manager, the remaining roles are as yet unfilled.

 - Start merging online repair -- we now have in-memory pageable memory
   for staging btrees, a bunch of pending fixes, and we've started the
   process of refactoring the scrub support code to support more of
   repair.  In particular, reaping of old blocks from damaged structures.

 - Scrub the realtime summary file.

 - Fix a bug where scrub's quota iteration only ever returned the root
   dquot.  Oooops.

 - Fix some typos.

[ Pull request from Chandan Babu, but signed tag and description from
  Darrick Wong, thus the first person singular above is Darrick, not
  Chandan ]

* tag 'xfs-6.6-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (37 commits)
  fs/xfs: Fix typos in comments
  xfs: fix dqiterate thinko
  xfs: don't check reflink iflag state when checking cow fork
  xfs: simplify returns in xchk_bmap
  xfs: rewrite xchk_inode_is_allocated to work properly
  xfs: hide xfs_inode_is_allocated in scrub common code
  xfs: fix agf_fllast when repairing an empty AGFL
  xfs: allow userspace to rebuild metadata structures
  xfs: clear pagf_agflreset when repairing the AGFL
  xfs: allow the user to cancel repairs before we start writing
  xfs: don't complain about unfixed metadata when repairs were injected
  xfs: implement online scrubbing of rtsummary info
  xfs: always rescan allegedly healthy per-ag metadata after repair
  xfs: move the realtime summary file scrubber to a separate source file
  xfs: wrap ilock/iunlock operations on sc->ip
  xfs: get our own reference to inodes that we want to scrub
  xfs: track usage statistics of online fsck
  xfs: improve xfarray quicksort pivot
  xfs: create scaffolding for creating debugfs entries
  xfs: cache pages used for xfarray quicksort convergence
  ...

1  2 
MAINTAINERS
fs/xfs/scrub/scrub.c
fs/xfs/scrub/scrub.h
fs/xfs/scrub/trace.h
fs/xfs/xfs_aops.c
fs/xfs/xfs_buf.c
fs/xfs/xfs_super.c
fs/xfs/xfs_trace.h

diff --cc MAINTAINERS
Simple merge
index a0fffbcd022bc9f80cde26207bf09e4b23dfb48c,e92129d74462b390cfab9f219db4715a5b253bd7..7d3aa14d81b55e9f0b867fb569da2ea11af61375
@@@ -178,16 -178,16 +178,18 @@@ xchk_teardown
        }
        if (sc->ip) {
                if (sc->ilock_flags)
-                       xfs_iunlock(sc->ip, sc->ilock_flags);
-               if (sc->ip != ip_in &&
-                   !xfs_internal_inum(sc->mp, sc->ip->i_ino))
-                       xchk_irele(sc, sc->ip);
+                       xchk_iunlock(sc, sc->ilock_flags);
+               xchk_irele(sc, sc->ip);
                sc->ip = NULL;
        }
 -      if (sc->sm->sm_flags & XFS_SCRUB_IFLAG_REPAIR)
 +      if (sc->flags & XCHK_HAVE_FREEZE_PROT) {
 +              sc->flags &= ~XCHK_HAVE_FREEZE_PROT;
                mnt_drop_write_file(sc->file);
 +      }
+       if (sc->xfile) {
+               xfile_destroy(sc->xfile);
+               sc->xfile = NULL;
+       }
        if (sc->buf) {
                if (sc->buf_cleanup)
                        sc->buf_cleanup(sc->buf);
Simple merge
Simple merge
Simple merge
Simple merge
index c79eac048456bd06e79c11d9fadf5d8d5abc02cf,09638e8fb4eef08a7f67d3c6ad9588a034544f24..1f77014c6e1abd136753807d37ac5cdf12099b76
@@@ -772,17 -760,7 +774,18 @@@ static voi
  xfs_mount_free(
        struct xfs_mount        *mp)
  {
 +      /*
 +       * Free the buftargs here because blkdev_put needs to be called outside
 +       * of sb->s_umount, which is held around the call to ->put_super.
 +       */
 +      if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp)
 +              xfs_free_buftarg(mp->m_logdev_targp);
 +      if (mp->m_rtdev_targp)
 +              xfs_free_buftarg(mp->m_rtdev_targp);
 +      if (mp->m_ddev_targp)
 +              xfs_free_buftarg(mp->m_ddev_targp);
 +
+       debugfs_remove(mp->m_debugfs);
        kfree(mp->m_rtname);
        kfree(mp->m_logname);
        kmem_free(mp);
@@@ -1537,11 -1538,18 +1556,18 @@@ xfs_fs_fill_super
  
        error = xfs_open_devices(mp);
        if (error)
 -              goto out_free_names;
 +              return error;
  
+       if (xfs_debugfs) {
+               mp->m_debugfs = xfs_debugfs_mkdir(mp->m_super->s_id,
+                                                 xfs_debugfs);
+       } else {
+               mp->m_debugfs = NULL;
+       }
        error = xfs_init_mount_workqueues(mp);
        if (error)
 -              goto out_close_devices;
 +              goto out_shutdown_devices;
  
        error = xfs_init_percpu_counters(mp);
        if (error)
Simple merge