/* * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc. * Copyright (c) 2010 David Chinner. * Copyright (c) 2011 Christoph Hellwig. * All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it would be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __XFS_EXTENT_BUSY_H__ #define __XFS_EXTENT_BUSY_H__ struct xfs_mount; struct xfs_trans; struct xfs_alloc_arg; /* * Busy block/extent entry. Indexed by a rbtree in perag to mark blocks that * have been freed but whose transactions aren't committed to disk yet. * * Note that we use the transaction ID to record the transaction, not the * transaction structure itself. See xfs_extent_busy_insert() for details. */ struct xfs_extent_busy { struct rb_node rb_node; /* ag by-bno indexed search tree */ struct list_head list; /* transaction busy extent list */ xfs_agnumber_t agno; xfs_agblock_t bno; xfs_extlen_t length; unsigned int flags; #define XFS_EXTENT_BUSY_DISCARDED 0x01 /* undergoing a discard op. */ #define XFS_EXTENT_BUSY_SKIP_DISCARD 0x02 /* do not discard */ }; void xfs_extent_busy_insert(struct xfs_trans *tp, xfs_agnumber_t agno, xfs_agblock_t bno, xfs_extlen_t len, unsigned int flags); void xfs_extent_busy_clear(struct xfs_mount *mp, struct list_head *list, bool do_discard); int xfs_extent_busy_search(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t bno, xfs_extlen_t len); void xfs_extent_busy_reuse(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t fbno, xfs_extlen_t flen, bool userdata); void xfs_extent_busy_trim(struct xfs_alloc_arg *args, xfs_agblock_t bno, xfs_extlen_t len, xfs_agblock_t *rbno, xfs_extlen_t *rlen); int xfs_extent_busy_ag_cmp(void *priv, struct list_head *a, struct list_head *b); static inline void xfs_extent_busy_sort(struct list_head *list) { list_sort(NULL, list, xfs_extent_busy_ag_cmp); } #endif /* __XFS_EXTENT_BUSY_H__ */ <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?id=b668b9030c0168cf86e054adfe72e89df49b2772'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/include?id=b668b9030c0168cf86e054adfe72e89df49b2772'>include</a>/<a href='/cgit.cgi/linux/net-next.git/log/include/dt-bindings?id=b668b9030c0168cf86e054adfe72e89df49b2772'>dt-bindings</a>/<a href='/cgit.cgi/linux/net-next.git/log/include/dt-bindings/leds?id=b668b9030c0168cf86e054adfe72e89df49b2772'>leds</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/include/dt-bindings/leds?id=b668b9030c0168cf86e054adfe72e89df49b2772&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>