Lines Matching refs:extents

27  * discards on extents that might be in use, or are so recently in use they are
29 * gathering extents to trim, we must hold the AGF lock to lock out other
35 * couple of million free extents and issuing synchronous discards on each
53 * This is exactly how online discard works - free extents are marked busy when
78 struct xfs_busy_extents *extents =
81 xfs_extent_busy_clear(extents->mount, &extents->extent_list, false);
82 kmem_free(extents->owner);
93 struct xfs_busy_extents *extents = bio->bi_private;
95 INIT_WORK(&extents->endio_work, xfs_discard_endio_work);
96 queue_work(xfs_discard_wq, &extents->endio_work);
101 * Walk the discard list and issue discards on all the busy extents in the
103 * call to clear all the busy extents once the discards are complete.
108 struct xfs_busy_extents *extents)
116 list_for_each_entry(busyp, &extents->extent_list, list) {
135 bio->bi_private = extents;
139 xfs_discard_endio_work(&extents->endio_work);
154 struct xfs_busy_extents *extents,
194 * Loop until we are done with all extents that are large
258 &extents->extent_list);
268 * is no more extents to search.
275 * If there was an error, release all the gathered busy extents because
279 xfs_extent_busy_clear(mp, &extents->extent_list, false);
293 * Iterate the free list gathering extents and discarding them. We need a cursor
312 struct xfs_busy_extents *extents;
314 extents = kzalloc(sizeof(*extents), GFP_KERNEL);
315 if (!extents) {
320 extents->mount = pag->pag_mount;
321 extents->owner = extents;
322 INIT_LIST_HEAD(&extents->extent_list);
325 &tcur, extents, blocks_trimmed);
327 kfree(extents);
333 * discarded extents can be removed from the busy extent list.
335 * the next round of extents to discard.
341 error = xfs_discard_extents(pag->pag_mount, extents);