LCOV - code coverage report
Current view: top level - fs/xfs - xfs_extent_busy.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc3-djwx @ Mon Jul 31 20:08:22 PDT 2023 Lines: 1 1 100.0 %
Date: 2023-07-31 20:08:22 Functions: 0 0 -

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0
       2             : /*
       3             :  * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
       4             :  * Copyright (c) 2010 David Chinner.
       5             :  * Copyright (c) 2011 Christoph Hellwig.
       6             :  * All Rights Reserved.
       7             :  */
       8             : #ifndef __XFS_EXTENT_BUSY_H__
       9             : #define __XFS_EXTENT_BUSY_H__
      10             : 
      11             : struct xfs_mount;
      12             : struct xfs_perag;
      13             : struct xfs_trans;
      14             : struct xfs_alloc_arg;
      15             : 
      16             : /*
      17             :  * Busy block/extent entry.  Indexed by a rbtree in perag to mark blocks that
      18             :  * have been freed but whose transactions aren't committed to disk yet.
      19             :  *
      20             :  * Note that we use the transaction ID to record the transaction, not the
      21             :  * transaction structure itself. See xfs_extent_busy_insert() for details.
      22             :  */
      23             : struct xfs_extent_busy {
      24             :         struct rb_node  rb_node;        /* ag by-bno indexed search tree */
      25             :         struct list_head list;          /* transaction busy extent list */
      26             :         xfs_agnumber_t  agno;
      27             :         xfs_agblock_t   bno;
      28             :         xfs_extlen_t    length;
      29             :         unsigned int    flags;
      30             : #define XFS_EXTENT_BUSY_DISCARDED       0x01    /* undergoing a discard op. */
      31             : #define XFS_EXTENT_BUSY_SKIP_DISCARD    0x02    /* do not discard */
      32             : };
      33             : 
      34             : void
      35             : xfs_extent_busy_insert(struct xfs_trans *tp, struct xfs_perag *pag,
      36             :         xfs_agblock_t bno, xfs_extlen_t len, unsigned int flags);
      37             : 
      38             : void
      39             : xfs_extent_busy_clear(struct xfs_mount *mp, struct list_head *list,
      40             :         bool do_discard);
      41             : 
      42             : int
      43             : xfs_extent_busy_search(struct xfs_mount *mp, struct xfs_perag *pag,
      44             :         xfs_agblock_t bno, xfs_extlen_t len);
      45             : 
      46             : void
      47             : xfs_extent_busy_reuse(struct xfs_mount *mp, struct xfs_perag *pag,
      48             :         xfs_agblock_t fbno, xfs_extlen_t flen, bool userdata);
      49             : 
      50             : bool
      51             : xfs_extent_busy_trim(struct xfs_alloc_arg *args, xfs_agblock_t *bno,
      52             :                 xfs_extlen_t *len, unsigned *busy_gen);
      53             : 
      54             : int
      55             : xfs_extent_busy_flush(struct xfs_trans *tp, struct xfs_perag *pag,
      56             :                 unsigned busy_gen, uint32_t alloc_flags);
      57             : 
      58             : void
      59             : xfs_extent_busy_wait_all(struct xfs_mount *mp);
      60             : 
      61             : int
      62             : xfs_extent_busy_ag_cmp(void *priv, const struct list_head *a,
      63             :         const struct list_head *b);
      64             : 
      65             : static inline void xfs_extent_busy_sort(struct list_head *list)
      66             : {
      67  4488925328 :         list_sort(NULL, list, xfs_extent_busy_ag_cmp);
      68             : }
      69             : 
      70             : #endif /* __XFS_EXTENT_BUSY_H__ */

Generated by: LCOV version 1.14