XFS_STATS_INC(mp, xs_del_exlist);
 
-       isrt = (whichfork == XFS_DATA_FORK) && XFS_IS_REALTIME_INODE(ip);
+       isrt = xfs_ifork_is_realtime(ip, whichfork);
        del_endoff = del->br_startoff + del->br_blockcount;
        got_endoff = got->br_startoff + got->br_blockcount;
        da_old = startblockval(got->br_startblock);
                return -ENOSPC;
 
        *logflagsp = XFS_ILOG_CORE;
-       if (whichfork == XFS_DATA_FORK && XFS_IS_REALTIME_INODE(ip)) {
+       if (xfs_ifork_is_realtime(ip, whichfork)) {
                if (!(bflags & XFS_BMAPI_REMAP)) {
                        error = xfs_rtfree_blocks(tp, del->br_startblock,
                                        del->br_blockcount);
                return 0;
        }
        XFS_STATS_INC(mp, xs_blk_unmap);
-       isrt = (whichfork == XFS_DATA_FORK) && XFS_IS_REALTIME_INODE(ip);
+       isrt = xfs_ifork_is_realtime(ip, whichfork);
        end = start + len;
 
        if (!xfs_iext_lookup_extent_before(ip, ifp, &end, &icur, &got)) {
 
                int nr_to_add);
 int xfs_iext_count_upgrade(struct xfs_trans *tp, struct xfs_inode *ip,
                uint nr_to_add);
+bool xfs_ifork_is_realtime(struct xfs_inode *ip, int whichfork);
 
 /* returns true if the fork has extents but they are not read in yet. */
 static inline bool xfs_need_iread_extents(const struct xfs_ifork *ifp)
 
        if (!ifp)
                return -ENOENT;
 
-       info.is_rt = whichfork == XFS_DATA_FORK && XFS_IS_REALTIME_INODE(ip);
+       info.is_rt = xfs_ifork_is_realtime(ip, whichfork);
        info.whichfork = whichfork;
        info.is_shared = whichfork == XFS_DATA_FORK && xfs_is_reflink_inode(ip);
        info.sc = sc;