brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · e74128c Raw
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