| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /* SPDX-License-Identifier: GPL-2.0-or-later
- *
- * Copyright (C) 2022 Oracle. All Rights Reserved.
- * Author: Allison Henderson <allison.henderson@oracle.com>
- */
- #ifndef __XFS_ATTR_ITEM_H__
- #define __XFS_ATTR_ITEM_H__
- /* kernel only ATTRI/ATTRD definitions */
- struct xfs_mount;
- struct kmem_zone;
- struct xfs_attri_log_nameval {
- struct xfs_log_iovec name;
- struct xfs_log_iovec new_name; /* PPTR_REPLACE only */
- struct xfs_log_iovec value;
- struct xfs_log_iovec new_value; /* PPTR_REPLACE only */
- refcount_t refcount;
- /* name and value follow the end of this struct */
- };
- /*
- * This is the "attr intention" log item. It is used to log the fact that some
- * extended attribute operations need to be processed. An operation is
- * currently either a set or remove. Set or remove operations are described by
- * the xfs_attr_intent which may be logged to this intent.
- *
- * During a normal attr operation, name and value point to the name and value
- * fields of the caller's xfs_da_args structure. During a recovery, the name
- * and value buffers are copied from the log, and stored in a trailing buffer
- * attached to the xfs_attr_intent until they are committed. They are freed
- * when the xfs_attr_intent itself is freed when the work is done.
- */
- struct xfs_attri_log_item {
- struct xfs_log_item attri_item;
- atomic_t attri_refcount;
- struct xfs_attri_log_nameval *attri_nameval;
- struct xfs_attri_log_format attri_format;
- };
- /*
- * This is the "attr done" log item. It is used to log the fact that some attrs
- * earlier mentioned in an attri item have been freed.
- */
- struct xfs_attrd_log_item {
- struct xfs_log_item attrd_item;
- struct xfs_attri_log_item *attrd_attrip;
- struct xfs_attrd_log_format attrd_format;
- };
- extern struct kmem_cache *xfs_attri_cache;
- extern struct kmem_cache *xfs_attrd_cache;
- enum xfs_attr_defer_op {
- XFS_ATTR_DEFER_SET,
- XFS_ATTR_DEFER_REMOVE,
- XFS_ATTR_DEFER_REPLACE,
- };
- void xfs_attr_defer_add(struct xfs_da_args *args, enum xfs_attr_defer_op op);
- #endif /* __XFS_ATTR_ITEM_H__ */
|