65 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later2 *3 * Copyright (C) 2022 Oracle. All Rights Reserved.4 * Author: Allison Henderson <allison.henderson@oracle.com>5 */6#ifndef __XFS_ATTR_ITEM_H__7#define __XFS_ATTR_ITEM_H__8 9/* kernel only ATTRI/ATTRD definitions */10 11struct xfs_mount;12struct kmem_zone;13 14struct xfs_attri_log_nameval {15 struct xfs_log_iovec name;16 struct xfs_log_iovec new_name; /* PPTR_REPLACE only */17 struct xfs_log_iovec value;18 struct xfs_log_iovec new_value; /* PPTR_REPLACE only */19 refcount_t refcount;20 21 /* name and value follow the end of this struct */22};23 24/*25 * This is the "attr intention" log item. It is used to log the fact that some26 * extended attribute operations need to be processed. An operation is27 * currently either a set or remove. Set or remove operations are described by28 * the xfs_attr_intent which may be logged to this intent.29 *30 * During a normal attr operation, name and value point to the name and value31 * fields of the caller's xfs_da_args structure. During a recovery, the name32 * and value buffers are copied from the log, and stored in a trailing buffer33 * attached to the xfs_attr_intent until they are committed. They are freed34 * when the xfs_attr_intent itself is freed when the work is done.35 */36struct xfs_attri_log_item {37 struct xfs_log_item attri_item;38 atomic_t attri_refcount;39 struct xfs_attri_log_nameval *attri_nameval;40 struct xfs_attri_log_format attri_format;41};42 43/*44 * This is the "attr done" log item. It is used to log the fact that some attrs45 * earlier mentioned in an attri item have been freed.46 */47struct xfs_attrd_log_item {48 struct xfs_log_item attrd_item;49 struct xfs_attri_log_item *attrd_attrip;50 struct xfs_attrd_log_format attrd_format;51};52 53extern struct kmem_cache *xfs_attri_cache;54extern struct kmem_cache *xfs_attrd_cache;55 56enum xfs_attr_defer_op {57 XFS_ATTR_DEFER_SET,58 XFS_ATTR_DEFER_REMOVE,59 XFS_ATTR_DEFER_REPLACE,60};61 62void xfs_attr_defer_add(struct xfs_da_args *args, enum xfs_attr_defer_op op);63 64#endif /* __XFS_ATTR_ITEM_H__ */65