1 // SPDX-License-Identifier: GPL-2.0+ 1 2 /* 3 * Copyright (C) 2016 Oracle. All Rights Rese 4 * Author: Darrick J. Wong <darrick.wong@oracl 5 */ 6 #ifndef __XFS_REFCOUNT_ITEM_H__ 7 #define __XFS_REFCOUNT_ITEM_H__ 8 9 /* 10 * There are (currently) two pairs of refcount 11 * increase and decrease. The log items for t 12 * update intent) and CUD (refcount update don 13 * is encoded in the flags field of each xfs_m 14 * 15 * *I items should be recorded in the *first* 16 * transactions, and the *D items should be re 17 * transaction that records the associated ref 18 * 19 * Should the system crash after the commit of 20 * but before the commit of the final transact 21 * recovery will use the redo information reco 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 pa 32 */ 33 #define XFS_CUI_MAX_FAST_EXTENTS 16 34 35 /* 36 * This is the "refcount update intent" log it 37 * the fact that some reverse mappings need to 38 * conjunction with the "refcount update done" 39 * below. 40 * 41 * These log items follow the same rules as st 42 * see the comments about that structure (in x 43 * more details. 44 */ 45 struct xfs_cui_log_item { 46 struct xfs_log_item cui_it 47 atomic_t cui_re 48 atomic_t cui_ne 49 struct xfs_cui_log_format cui_fo 50 }; 51 52 static inline size_t 53 xfs_cui_log_item_sizeof( 54 unsigned int nr) 55 { 56 return offsetof(struct xfs_cui_log_ite 57 xfs_cui_log_format_siz 58 } 59 60 /* 61 * This is the "refcount update done" log item 62 * fact that some refcountbt updates mentioned 63 * have been performed. 64 */ 65 struct xfs_cud_log_item { 66 struct xfs_log_item cud_it 67 struct xfs_cui_log_item *cud_c 68 struct xfs_cud_log_format cud_fo 69 }; 70 71 extern struct kmem_cache *xfs_cui_cache 72 extern struct kmem_cache *xfs_cud_cache 73 74 struct xfs_refcount_intent; 75 76 void xfs_refcount_defer_add(struct xfs_trans * 77 struct xfs_refcount_intent *ri 78 79 #endif /* __XFS_REFCOUNT_ITEM_H__ */ 80
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.