Lines Matching refs:extents

29  * discards on extents that might be in use, or are so recently in use they are
31 * gathering extents to trim, we must hold the AGF lock to lock out other
37 * couple of million free extents and issuing synchronous discards on each
55 * This is exactly how online discard works - free extents are marked busy when
80 struct xfs_busy_extents *extents =
83 xfs_extent_busy_clear(extents->mount, &extents->extent_list, false);
84 kfree(extents->owner);
95 struct xfs_busy_extents *extents = bio->bi_private;
97 INIT_WORK(&extents->endio_work, xfs_discard_endio_work);
98 queue_work(xfs_discard_wq, &extents->endio_work);
103 * Walk the discard list and issue discards on all the busy extents in the
105 * call to clear all the busy extents once the discards are complete.
110 struct xfs_busy_extents *extents)
118 list_for_each_entry(busyp, &extents->extent_list, list) {
137 bio->bi_private = extents;
141 xfs_discard_endio_work(&extents->endio_work);
156 struct xfs_busy_extents *extents,
201 * Loop until we are done with all extents that are large
266 &extents->extent_list);
276 * is no more extents to search.
283 * If there was an error, release all the gathered busy extents because
287 xfs_extent_busy_clear(mp, &extents->extent_list, false);
302 * Iterate the free list gathering extents and discarding them. We need a cursor
321 struct xfs_busy_extents *extents;
323 extents = kzalloc(sizeof(*extents), GFP_KERNEL);
324 if (!extents) {
329 extents->mount = pag->pag_mount;
330 extents->owner = extents;
331 INIT_LIST_HEAD(&extents->extent_list);
334 &tcur, extents, blocks_trimmed);
336 kfree(extents);
342 * discarded extents can be removed from the busy extent list.
344 * the next round of extents to discard.
350 error = xfs_discard_extents(pag->pag_mount, extents);