Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later
0002  *
0003  * Copyright (C) 2022 Oracle.  All Rights Reserved.
0004  * Author: Allison Henderson <allison.henderson@oracle.com>
0005  */
0006 #ifndef __XFS_ATTR_ITEM_H__
0007 #define __XFS_ATTR_ITEM_H__
0008 
0009 /* kernel only ATTRI/ATTRD definitions */
0010 
0011 struct xfs_mount;
0012 struct kmem_zone;
0013 
0014 struct xfs_attri_log_nameval {
0015     struct xfs_log_iovec    name;
0016     struct xfs_log_iovec    value;
0017     refcount_t      refcount;
0018 
0019     /* name and value follow the end of this struct */
0020 };
0021 
0022 /*
0023  * This is the "attr intention" log item.  It is used to log the fact that some
0024  * extended attribute operations need to be processed.  An operation is
0025  * currently either a set or remove.  Set or remove operations are described by
0026  * the xfs_attr_intent which may be logged to this intent.
0027  *
0028  * During a normal attr operation, name and value point to the name and value
0029  * fields of the caller's xfs_da_args structure.  During a recovery, the name
0030  * and value buffers are copied from the log, and stored in a trailing buffer
0031  * attached to the xfs_attr_intent until they are committed.  They are freed
0032  * when the xfs_attr_intent itself is freed when the work is done.
0033  */
0034 struct xfs_attri_log_item {
0035     struct xfs_log_item     attri_item;
0036     atomic_t            attri_refcount;
0037     struct xfs_attri_log_nameval    *attri_nameval;
0038     struct xfs_attri_log_format attri_format;
0039 };
0040 
0041 /*
0042  * This is the "attr done" log item.  It is used to log the fact that some attrs
0043  * earlier mentioned in an attri item have been freed.
0044  */
0045 struct xfs_attrd_log_item {
0046     struct xfs_log_item     attrd_item;
0047     struct xfs_attri_log_item   *attrd_attrip;
0048     struct xfs_attrd_log_format attrd_format;
0049 };
0050 
0051 extern struct kmem_cache    *xfs_attri_cache;
0052 extern struct kmem_cache    *xfs_attrd_cache;
0053 
0054 #endif  /* __XFS_ATTR_ITEM_H__ */