~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/xfs/xfs_rmap_item.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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         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 struct xfs_rmap_intent;
 75 
 76 void xfs_rmap_defer_add(struct xfs_trans *tp, struct xfs_rmap_intent *ri);
 77 
 78 #endif  /* __XFS_RMAP_ITEM_H__ */
 79 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php