1fd920008SAllison Henderson /* SPDX-License-Identifier: GPL-2.0-or-later 2fd920008SAllison Henderson * 3fd920008SAllison Henderson * Copyright (C) 2022 Oracle. All Rights Reserved. 4fd920008SAllison Henderson * Author: Allison Henderson <allison.henderson@oracle.com> 5fd920008SAllison Henderson */ 6fd920008SAllison Henderson #ifndef __XFS_ATTR_ITEM_H__ 7fd920008SAllison Henderson #define __XFS_ATTR_ITEM_H__ 8fd920008SAllison Henderson 9fd920008SAllison Henderson /* kernel only ATTRI/ATTRD definitions */ 10fd920008SAllison Henderson 11fd920008SAllison Henderson struct xfs_mount; 12fd920008SAllison Henderson struct kmem_zone; 13fd920008SAllison Henderson 14*4183e4f2SDarrick J. Wong struct xfs_attri_log_nameval { 15*4183e4f2SDarrick J. Wong struct xfs_log_iovec name; 16*4183e4f2SDarrick J. Wong struct xfs_log_iovec value; 17*4183e4f2SDarrick J. Wong refcount_t refcount; 18*4183e4f2SDarrick J. Wong 19*4183e4f2SDarrick J. Wong /* name and value follow the end of this struct */ 20*4183e4f2SDarrick J. Wong }; 21*4183e4f2SDarrick J. Wong 22fd920008SAllison Henderson /* 23fd920008SAllison Henderson * This is the "attr intention" log item. It is used to log the fact that some 24fd920008SAllison Henderson * extended attribute operations need to be processed. An operation is 25fd920008SAllison Henderson * currently either a set or remove. Set or remove operations are described by 26e3c5de22SDarrick J. Wong * the xfs_attr_intent which may be logged to this intent. 27fd920008SAllison Henderson * 28fd920008SAllison Henderson * During a normal attr operation, name and value point to the name and value 29fd920008SAllison Henderson * fields of the caller's xfs_da_args structure. During a recovery, the name 30fd920008SAllison Henderson * and value buffers are copied from the log, and stored in a trailing buffer 31e3c5de22SDarrick J. Wong * attached to the xfs_attr_intent until they are committed. They are freed 32e3c5de22SDarrick J. Wong * when the xfs_attr_intent itself is freed when the work is done. 33fd920008SAllison Henderson */ 34fd920008SAllison Henderson struct xfs_attri_log_item { 35fd920008SAllison Henderson struct xfs_log_item attri_item; 36fd920008SAllison Henderson atomic_t attri_refcount; 37*4183e4f2SDarrick J. Wong struct xfs_attri_log_nameval *attri_nameval; 38fd920008SAllison Henderson struct xfs_attri_log_format attri_format; 39fd920008SAllison Henderson }; 40fd920008SAllison Henderson 41fd920008SAllison Henderson /* 42fd920008SAllison Henderson * This is the "attr done" log item. It is used to log the fact that some attrs 43fd920008SAllison Henderson * earlier mentioned in an attri item have been freed. 44fd920008SAllison Henderson */ 45fd920008SAllison Henderson struct xfs_attrd_log_item { 46fd920008SAllison Henderson struct xfs_log_item attrd_item; 47fd920008SAllison Henderson struct xfs_attri_log_item *attrd_attrip; 48fd920008SAllison Henderson struct xfs_attrd_log_format attrd_format; 49fd920008SAllison Henderson }; 50fd920008SAllison Henderson 514136e38aSDarrick J. Wong extern struct kmem_cache *xfs_attri_cache; 524136e38aSDarrick J. Wong extern struct kmem_cache *xfs_attrd_cache; 534136e38aSDarrick J. Wong 54fd920008SAllison Henderson #endif /* __XFS_ATTR_ITEM_H__ */ 55