mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
xfs: move more logic into xfs_extent_busy_clear_one
Move the handling of discarded entries into xfs_extent_busy_clear_one to reuse the length check and tidy up the logic in the caller. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
This commit is contained in:
parent
05150d46a3
commit
e78a3ce283
@ -518,20 +518,26 @@ fail:
|
||||
goto out;
|
||||
}
|
||||
|
||||
STATIC void
|
||||
static bool
|
||||
xfs_extent_busy_clear_one(
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_perag *pag,
|
||||
struct xfs_extent_busy *busyp)
|
||||
struct xfs_extent_busy *busyp,
|
||||
bool do_discard)
|
||||
{
|
||||
if (busyp->length) {
|
||||
trace_xfs_extent_busy_clear(mp, busyp->agno, busyp->bno,
|
||||
busyp->length);
|
||||
if (do_discard &&
|
||||
!(busyp->flags & XFS_EXTENT_BUSY_SKIP_DISCARD)) {
|
||||
busyp->flags = XFS_EXTENT_BUSY_DISCARDED;
|
||||
return false;
|
||||
}
|
||||
trace_xfs_extent_busy_clear(pag->pag_mount, busyp->agno,
|
||||
busyp->bno, busyp->length);
|
||||
rb_erase(&busyp->rb_node, &pag->pagb_tree);
|
||||
}
|
||||
|
||||
list_del_init(&busyp->list);
|
||||
kfree(busyp);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -575,13 +581,8 @@ xfs_extent_busy_clear(
|
||||
wakeup = false;
|
||||
}
|
||||
|
||||
if (do_discard && busyp->length &&
|
||||
!(busyp->flags & XFS_EXTENT_BUSY_SKIP_DISCARD)) {
|
||||
busyp->flags = XFS_EXTENT_BUSY_DISCARDED;
|
||||
} else {
|
||||
xfs_extent_busy_clear_one(mp, pag, busyp);
|
||||
if (xfs_extent_busy_clear_one(pag, busyp, do_discard))
|
||||
wakeup = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (pag)
|
||||
|
Loading…
Reference in New Issue
Block a user