Commit 98493ff8 authored by Allison Henderson's avatar Allison Henderson Committed by Darrick J. Wong
Browse files

xfs: add parent pointer support to attribute code



Add the new parent attribute type. XFS_ATTR_PARENT is used only for parent pointer
entries; it uses reserved blocks like XFS_ATTR_ROOT.

Signed-off-by: default avatarMark Tinguely <mark.tinguely@oracle.com>
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarAllison Henderson <allison.henderson@oracle.com>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent a64e0134
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -714,13 +714,17 @@ struct xfs_attr3_leafblock {
#define	XFS_ATTR_LOCAL_BIT	0	/* attr is stored locally */
#define	XFS_ATTR_ROOT_BIT	1	/* limit access to trusted attrs */
#define	XFS_ATTR_SECURE_BIT	2	/* limit access to secure attrs */
#define	XFS_ATTR_PARENT_BIT	3	/* parent pointer attrs */
#define	XFS_ATTR_INCOMPLETE_BIT	7	/* attr in middle of create/delete */
#define XFS_ATTR_LOCAL		(1u << XFS_ATTR_LOCAL_BIT)
#define XFS_ATTR_ROOT		(1u << XFS_ATTR_ROOT_BIT)
#define XFS_ATTR_SECURE		(1u << XFS_ATTR_SECURE_BIT)
#define XFS_ATTR_PARENT		(1u << XFS_ATTR_PARENT_BIT)
#define XFS_ATTR_INCOMPLETE	(1u << XFS_ATTR_INCOMPLETE_BIT)

#define XFS_ATTR_NSP_ONDISK_MASK	(XFS_ATTR_ROOT | XFS_ATTR_SECURE)
#define XFS_ATTR_NSP_ONDISK_MASK	(XFS_ATTR_ROOT | \
					 XFS_ATTR_SECURE | \
					 XFS_ATTR_PARENT)

#define XFS_ATTR_ONDISK_MASK	(XFS_ATTR_NSP_ONDISK_MASK | \
				 XFS_ATTR_LOCAL | \
@@ -729,7 +733,8 @@ struct xfs_attr3_leafblock {
#define XFS_ATTR_NAMESPACE_STR \
	{ XFS_ATTR_LOCAL,	"local" }, \
	{ XFS_ATTR_ROOT,	"root" }, \
	{ XFS_ATTR_SECURE,	"secure" }
	{ XFS_ATTR_SECURE,	"secure" }, \
	{ XFS_ATTR_PARENT,	"parent" }

/*
 * Alignment for namelist and valuelist entries (since they are mixed
+1 −0
Original line number Diff line number Diff line
@@ -1034,6 +1034,7 @@ struct xfs_icreate_log {
 */
#define XFS_ATTRI_FILTER_MASK		(XFS_ATTR_ROOT | \
					 XFS_ATTR_SECURE | \
					 XFS_ATTR_PARENT | \
					 XFS_ATTR_INCOMPLETE)

/*
+2 −1
Original line number Diff line number Diff line
@@ -91,7 +91,8 @@ struct xfs_exchrange;
#define XFS_ATTR_FILTER_FLAGS \
	{ XFS_ATTR_ROOT,	"ROOT" }, \
	{ XFS_ATTR_SECURE,	"SECURE" }, \
	{ XFS_ATTR_INCOMPLETE,	"INCOMPLETE" }
	{ XFS_ATTR_INCOMPLETE,	"INCOMPLETE" }, \
	{ XFS_ATTR_PARENT,	"PARENT" }

DECLARE_EVENT_CLASS(xfs_attr_list_class,
	TP_PROTO(struct xfs_attr_list_context *ctx),