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

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0+
       2             : /*
       3             :  * Copyright (C) 2016 Oracle.  All Rights Reserved.
       4             :  * Author: Darrick J. Wong <darrick.wong@oracle.com>
       5             :  */
       6             : #ifndef __XFS_REFCOUNT_ITEM_H__
       7             : #define __XFS_REFCOUNT_ITEM_H__
       8             : 
       9             : /*
      10             :  * There are (currently) two pairs of refcount btree redo item types:
      11             :  * increase and decrease.  The log items for these are CUI (refcount
      12             :  * update intent) and CUD (refcount update done).  The redo item type
      13             :  * is encoded in the flags field of each xfs_map_extent.
      14             :  *
      15             :  * *I items should be recorded in the *first* of a series of rolled
      16             :  * transactions, and the *D items should be recorded in the same
      17             :  * transaction that records the associated refcountbt updates.
      18             :  *
      19             :  * Should the system crash after the commit of the first transaction
      20             :  * but before the commit of the final transaction in a series, log
      21             :  * recovery will use the redo information recorded by the intent items
      22             :  * to replay the refcountbt metadata updates.
      23             :  */
      24             : 
      25             : /* kernel only CUI/CUD definitions */
      26             : 
      27             : struct xfs_mount;
      28             : struct kmem_cache;
      29             : 
      30             : /*
      31             :  * Max number of extents in fast allocation path.
      32             :  */
      33             : #define XFS_CUI_MAX_FAST_EXTENTS        16
      34             : 
      35             : /*
      36             :  * This is the "refcount update intent" log item.  It is used to log
      37             :  * the fact that some reverse mappings need to change.  It is used in
      38             :  * conjunction with the "refcount update done" log item described
      39             :  * below.
      40             :  *
      41             :  * These log items follow the same rules as struct xfs_efi_log_item;
      42             :  * see the comments about that structure (in xfs_extfree_item.h) for
      43             :  * more details.
      44             :  */
      45             : struct xfs_cui_log_item {
      46             :         struct xfs_log_item             cui_item;
      47             :         atomic_t                        cui_refcount;
      48             :         atomic_t                        cui_next_extent;
      49             :         struct xfs_cui_log_format       cui_format;
      50             : };
      51             : 
      52             : static inline size_t
      53             : xfs_cui_log_item_sizeof(
      54             :         unsigned int            nr)
      55             : {
      56           0 :         return offsetof(struct xfs_cui_log_item, cui_format) +
      57             :                         xfs_cui_log_format_sizeof(nr);
      58             : }
      59             : 
      60             : /*
      61             :  * This is the "refcount update done" log item.  It is used to log the
      62             :  * fact that some refcountbt updates mentioned in an earlier cui item
      63             :  * have been performed.
      64             :  */
      65             : struct xfs_cud_log_item {
      66             :         struct xfs_log_item             cud_item;
      67             :         struct xfs_cui_log_item         *cud_cuip;
      68             :         struct xfs_cud_log_format       cud_format;
      69             : };
      70             : 
      71             : extern struct kmem_cache        *xfs_cui_cache;
      72             : extern struct kmem_cache        *xfs_cud_cache;
      73             : 
      74             : #endif  /* __XFS_REFCOUNT_ITEM_H__ */

Generated by: LCOV version 1.14