From: allison.henderson@oracle.com
To: linux-xfs@vger.kernel.org
Subject: [PATCH v10 11/32] xfs: add parent pointer support to attribute code
Date: Wed, 8 Mar 2023 15:37:33 -0700 [thread overview]
Message-ID: <20230308223754.1455051-12-allison.henderson@oracle.com> (raw)
In-Reply-To: <20230308223754.1455051-1-allison.henderson@oracle.com>
From: Allison Henderson <allison.henderson@oracle.com>
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: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
---
fs/xfs/libxfs/xfs_attr.c | 4 +++-
fs/xfs/libxfs/xfs_da_format.h | 5 ++++-
fs/xfs/libxfs/xfs_log_format.h | 1 +
fs/xfs/scrub/attr.c | 2 +-
4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index b1dbed7655e8..101823772bf9 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -976,11 +976,13 @@ xfs_attr_set(
struct xfs_inode *dp = args->dp;
struct xfs_mount *mp = dp->i_mount;
struct xfs_trans_res tres;
- bool rsvd = (args->attr_filter & XFS_ATTR_ROOT);
+ bool rsvd;
int error, local;
int rmt_blks = 0;
unsigned int total;
+ rsvd = (args->attr_filter & (XFS_ATTR_ROOT | XFS_ATTR_PARENT)) != 0;
+
if (xfs_is_shutdown(dp->i_mount))
return -EIO;
diff --git a/fs/xfs/libxfs/xfs_da_format.h b/fs/xfs/libxfs/xfs_da_format.h
index 25e2841084e1..3dc03968bba6 100644
--- a/fs/xfs/libxfs/xfs_da_format.h
+++ b/fs/xfs/libxfs/xfs_da_format.h
@@ -688,12 +688,15 @@ 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)
/*
* Alignment for namelist and valuelist entries (since they are mixed
diff --git a/fs/xfs/libxfs/xfs_log_format.h b/fs/xfs/libxfs/xfs_log_format.h
index ae9c99762a24..727b5a858028 100644
--- a/fs/xfs/libxfs/xfs_log_format.h
+++ b/fs/xfs/libxfs/xfs_log_format.h
@@ -967,6 +967,7 @@ struct xfs_icreate_log {
*/
#define XFS_ATTRI_FILTER_MASK (XFS_ATTR_ROOT | \
XFS_ATTR_SECURE | \
+ XFS_ATTR_PARENT | \
XFS_ATTR_INCOMPLETE)
/*
diff --git a/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c
index 31529b9bf389..9d2e33743ecd 100644
--- a/fs/xfs/scrub/attr.c
+++ b/fs/xfs/scrub/attr.c
@@ -441,7 +441,7 @@ xchk_xattr_rec(
/* Retrieve the entry and check it. */
hash = be32_to_cpu(ent->hashval);
badflags = ~(XFS_ATTR_LOCAL | XFS_ATTR_ROOT | XFS_ATTR_SECURE |
- XFS_ATTR_INCOMPLETE);
+ XFS_ATTR_INCOMPLETE | XFS_ATTR_PARENT);
if ((ent->flags & badflags) != 0)
xchk_da_set_corrupt(ds, level);
if (ent->flags & XFS_ATTR_LOCAL) {
--
2.25.1
next prev parent reply other threads:[~2023-03-08 22:38 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-08 22:37 [PATCH v10 00/32] Parent Pointers allison.henderson
2023-03-08 22:37 ` [PATCH v10 01/32] xfs: Add new name to attri/d allison.henderson
2023-03-08 22:37 ` [PATCH v10 02/32] xfs: Hold inode locks in xfs_ialloc allison.henderson
2023-03-08 22:37 ` [PATCH v10 03/32] xfs: Hold inode locks in xfs_trans_alloc_dir allison.henderson
2023-03-08 22:37 ` [PATCH v10 04/32] xfs: Hold inode locks in xfs_rename allison.henderson
2023-03-08 22:37 ` [PATCH v10 05/32] xfs: Expose init_xattrs in xfs_create_tmpfile allison.henderson
2023-03-08 22:37 ` [PATCH v10 06/32] xfs: Increase XFS_DEFER_OPS_NR_INODES to 5 allison.henderson
2023-03-08 22:37 ` [PATCH v10 07/32] xfs: Increase XFS_QM_TRANS_MAXDQS " allison.henderson
2023-03-08 22:37 ` [PATCH v10 08/32] xfs: get directory offset when adding directory name allison.henderson
2023-03-08 22:37 ` [PATCH v10 09/32] xfs: get directory offset when removing " allison.henderson
2023-03-08 22:37 ` [PATCH v10 10/32] xfs: get directory offset when replacing a " allison.henderson
2023-03-08 22:37 ` allison.henderson [this message]
2023-03-08 22:37 ` [PATCH v10 12/32] xfs: define parent pointer xattr format allison.henderson
2023-03-08 22:37 ` [PATCH v10 13/32] xfs: Add xfs_verify_pptr allison.henderson
2023-03-08 22:37 ` [PATCH v10 14/32] xfs: extend transaction reservations for parent attributes allison.henderson
2023-03-08 22:37 ` [PATCH v10 15/32] xfs: parent pointer attribute creation allison.henderson
2023-03-08 22:37 ` [PATCH v10 16/32] xfs: add parent attributes to link allison.henderson
2023-03-08 22:37 ` [PATCH v10 17/32] xfs: add parent attributes to symlink allison.henderson
2023-03-08 22:37 ` [PATCH v10 18/32] xfs: remove parent pointers in unlink allison.henderson
2023-03-08 22:37 ` [PATCH v10 19/32] xfs: Indent xfs_rename allison.henderson
2023-03-08 22:37 ` [PATCH v10 20/32] xfs: Add parent pointers to rename allison.henderson
2023-03-08 22:37 ` [PATCH v10 21/32] xfs: Add parent pointers to xfs_cross_rename allison.henderson
2023-03-08 22:37 ` [PATCH v10 22/32] xfs: Add the parent pointer support to the superblock version 5 allison.henderson
2023-03-08 22:37 ` [PATCH v10 23/32] xfs: Add helper function xfs_attr_list_context_init allison.henderson
2023-03-08 22:37 ` [PATCH v10 24/32] xfs: Filter XFS_ATTR_PARENT for getfattr allison.henderson
2023-03-08 22:37 ` [PATCH v10 25/32] xfs: pass the attr value to put_listent when possible allison.henderson
2023-03-08 22:37 ` [PATCH v10 26/32] xfs: Add parent pointer ioctl allison.henderson
2023-03-08 22:37 ` [PATCH v10 27/32] xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res allison.henderson
2023-03-08 22:37 ` [PATCH v10 28/32] xfs: drop compatibility minimum log size computations for reflink allison.henderson
2023-03-08 22:37 ` [PATCH v10 29/32] xfs: add xfs_trans_mod_sb tracing allison.henderson
2023-03-08 22:37 ` [PATCH v10 30/32] xfs: move/add parent pointer validators to xfs_parent allison.henderson
2023-03-08 22:37 ` [PATCH v10 31/32] xfs: directory lookups should return diroffsets too allison.henderson
2023-03-08 22:37 ` [PATCH v10 32/32] xfs: don't remove the attr fork when parent pointers are enabled allison.henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230308223754.1455051-12-allison.henderson@oracle.com \
--to=allison.henderson@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).