static inline bool
 xfs_rui_validate_map(
        struct xfs_mount                *mp,
+       bool                            isrt,
        struct xfs_map_extent           *map)
 {
        if (!xfs_has_rmapbt(mp))
        if (!xfs_verify_fileext(mp, map->me_startoff, map->me_len))
                return false;
 
+       if (isrt)
+               return xfs_verify_rtbext(mp, map->me_startblock, map->me_len);
+
        return xfs_verify_fsbext(mp, map->me_startblock, map->me_len);
 }
 
 xfs_rui_recover_work(
        struct xfs_mount                *mp,
        struct xfs_defer_pending        *dfp,
+       bool                            isrt,
        const struct xfs_map_extent     *map)
 {
        struct xfs_rmap_intent          *ri;
        ri->ri_bmap.br_blockcount = map->me_len;
        ri->ri_bmap.br_state = (map->me_flags & XFS_RMAP_EXTENT_UNWRITTEN) ?
                        XFS_EXT_UNWRITTEN : XFS_EXT_NORM;
-       ri->ri_group = xfs_group_intent_get(mp, map->me_startblock, XG_TYPE_AG);
+       ri->ri_group = xfs_group_intent_get(mp, map->me_startblock,
+                       isrt ? XG_TYPE_RTG : XG_TYPE_AG);
+       ri->ri_realtime = isrt;
 
        xfs_defer_add_item(dfp, &ri->ri_list);
 }
        struct xfs_rui_log_item         *ruip = RUI_ITEM(lip);
        struct xfs_trans                *tp;
        struct xfs_mount                *mp = lip->li_log->l_mp;
+       bool                            isrt = xfs_rui_item_isrt(lip);
        int                             i;
        int                             error = 0;
 
         * just toss the RUI.
         */
        for (i = 0; i < ruip->rui_format.rui_nextents; i++) {
-               if (!xfs_rui_validate_map(mp,
+               if (!xfs_rui_validate_map(mp, isrt,
                                        &ruip->rui_format.rui_extents[i])) {
                        XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp,
                                        &ruip->rui_format,
                        return -EFSCORRUPTED;
                }
 
-               xfs_rui_recover_work(mp, dfp, &ruip->rui_format.rui_extents[i]);
+               xfs_rui_recover_work(mp, dfp, isrt,
+                               &ruip->rui_format.rui_extents[i]);
        }
 
        resv = xlog_recover_resv(&M_RES(mp)->tr_itruncate);