Commit 5049ff4d authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: create a helper to decide if a file mapping targets the rt volume



Create a helper so that we can stop open-coding this decision
everywhere.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 0dc63c8a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -4913,7 +4913,7 @@ xfs_bmap_del_extent_delay(

	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);
@@ -5149,7 +5149,7 @@ xfs_bmap_del_extent_real(
		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);
@@ -5396,7 +5396,7 @@ __xfs_bunmapi(
		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)) {
+9 −0
Original line number Diff line number Diff line
@@ -813,3 +813,12 @@ xfs_iext_count_upgrade(

	return 0;
}

/* Decide if a file mapping is on the realtime device or not. */
bool
xfs_ifork_is_realtime(
	struct xfs_inode	*ip,
	int			whichfork)
{
	return XFS_IS_REALTIME_INODE(ip) && whichfork != XFS_ATTR_FORK;
}
+1 −0
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ int xfs_iext_count_may_overflow(struct xfs_inode *ip, int whichfork,
		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)
+1 −1
Original line number Diff line number Diff line
@@ -924,7 +924,7 @@ xchk_bmap(
	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;