LCOV - code coverage report
Current view: top level - fs/xfs - xfs_rmap_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_RMAP_ITEM_H__
       7             : #define __XFS_RMAP_ITEM_H__
       8             : 
       9             : /*
      10             :  * There are (currently) three pairs of rmap btree redo item types: map, unmap,
      11             :  * and convert.  The common abbreviations for these are RUI (rmap update
      12             :  * intent) and RUD (rmap update done).  The redo item type is encoded in the
      13             :  * 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 transaction
      17             :  * that records the associated rmapbt updates.  Typically, the first
      18             :  * transaction will record a bmbt update, followed by some number of
      19             :  * transactions containing rmapbt updates, and finally transactions with any
      20             :  * bnobt/cntbt updates.
      21             :  *
      22             :  * Should the system crash after the commit of the first transaction but
      23             :  * before the commit of the final transaction in a series, log recovery will
      24             :  * use the redo information recorded by the intent items to replay the
      25             :  * (rmapbt/bnobt/cntbt) metadata updates in the non-first transaction.
      26             :  */
      27             : 
      28             : /* kernel only RUI/RUD definitions */
      29             : 
      30             : struct xfs_mount;
      31             : struct kmem_cache;
      32             : 
      33             : /*
      34             :  * Max number of extents in fast allocation path.
      35             :  */
      36             : #define XFS_RUI_MAX_FAST_EXTENTS        16
      37             : 
      38             : /*
      39             :  * This is the "rmap update intent" log item.  It is used to log the fact that
      40             :  * some reverse mappings need to change.  It is used in conjunction with the
      41             :  * "rmap update done" log item described below.
      42             :  *
      43             :  * These log items follow the same rules as struct xfs_efi_log_item; see the
      44             :  * comments about that structure (in xfs_extfree_item.h) for more details.
      45             :  */
      46             : struct xfs_rui_log_item {
      47             :         struct xfs_log_item             rui_item;
      48             :         atomic_t                        rui_refcount;
      49             :         atomic_t                        rui_next_extent;
      50             :         struct xfs_rui_log_format       rui_format;
      51             : };
      52             : 
      53             : static inline size_t
      54             : xfs_rui_log_item_sizeof(
      55             :         unsigned int            nr)
      56             : {
      57           0 :         return offsetof(struct xfs_rui_log_item, rui_format) +
      58             :                         xfs_rui_log_format_sizeof(nr);
      59             : }
      60             : 
      61             : /*
      62             :  * This is the "rmap update done" log item.  It is used to log the fact that
      63             :  * some rmapbt updates mentioned in an earlier rui item have been performed.
      64             :  */
      65             : struct xfs_rud_log_item {
      66             :         struct xfs_log_item             rud_item;
      67             :         struct xfs_rui_log_item         *rud_ruip;
      68             :         struct xfs_rud_log_format       rud_format;
      69             : };
      70             : 
      71             : extern struct kmem_cache        *xfs_rui_cache;
      72             : extern struct kmem_cache        *xfs_rud_cache;
      73             : 
      74             : #endif  /* __XFS_RMAP_ITEM_H__ */

Generated by: LCOV version 1.14