repair: btree blocks are never on the RT subvolume
authorChristoph Hellwig <hch@lst.de>
Mon, 15 Jul 2024 15:30:30 +0000 (17:30 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 17 Jul 2024 12:32:25 +0000 (14:32 +0200)
scan_bmapbt tries to track btree blocks in the RT duplicate extent
AVL tree if the inode has the realtime flag set.  Given that the
RT subvolume is only ever used for file data this is incorrect.

Signed-off-by: Christoph Hellwig <hch@lst.de>
repair/scan.c

index c469f60c4035ae53c73a4234e225a3bc0dc153e6..398eb4928d8cf028db23e8af0cf30f4f1ab0042c 100644 (file)
@@ -417,22 +417,11 @@ _("bad state %d, inode %" PRIu64 " bmap block 0x%" PRIx64 "\n"),
                        break;
                }
                pthread_mutex_unlock(&ag_locks[agno].lock);
-       } else  {
-               /*
-                * attribute fork for realtime files is in the regular
-                * filesystem
-                */
-               if (type != XR_INO_RTDATA || whichfork != XFS_DATA_FORK)  {
-                       if (search_dup_extent(XFS_FSB_TO_AGNO(mp, bno),
-                                       XFS_FSB_TO_AGBNO(mp, bno),
-                                       XFS_FSB_TO_AGBNO(mp, bno) + 1))
-                               return(1);
-               } else  {
-                       xfs_rtxnum_t    ext = xfs_rtb_to_rtx(mp, bno);
-
-                       if (search_rt_dup_extent(mp, ext))
-                               return 1;
-               }
+       } else {
+               if (search_dup_extent(XFS_FSB_TO_AGNO(mp, bno),
+                               XFS_FSB_TO_AGBNO(mp, bno),
+                               XFS_FSB_TO_AGBNO(mp, bno) + 1))
+                       return 1;
        }
        (*tot)++;
        numrecs = be16_to_cpu(block->bb_numrecs);