From: Anand Jain <anand.jain@oracle.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 5/6] btrfs: split thread with trans to use btrfs_setxattr
Date: Fri, 12 Apr 2019 16:02:58 +0800 [thread overview]
Message-ID: <20190412080259.5192-6-anand.jain@oracle.com> (raw)
In-Reply-To: <20190412080259.5192-1-anand.jain@oracle.com>
When the parent thread has already created the transaction call
btrfs_setxattr() directly. Also adds assert in btrfs_setxattr()
to check if trans is not null.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
fs/btrfs/acl.c | 6 +++++-
fs/btrfs/props.c | 34 ++++++++++++++++++++++++----------
fs/btrfs/xattr.c | 6 ++++--
3 files changed, 33 insertions(+), 13 deletions(-)
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index d3b04c6abc61..7fe6551bc59b 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -93,7 +93,11 @@ static int __btrfs_set_acl(struct btrfs_trans_handle *trans,
goto out;
}
- ret = btrfs_setxattr_trans(trans, inode, name, value, size, 0);
+ if (trans)
+ ret = btrfs_setxattr(trans, inode, name, value, size, 0);
+ else
+ ret = btrfs_setxattr_trans(NULL, inode, name, value, size, 0);
+
out:
kfree(value);
diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 61ced0ebb5ba..a73c1bdc7b05 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -70,8 +70,13 @@ static int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
return -EINVAL;
if (value_len == 0) {
- ret = btrfs_setxattr_trans(trans, inode, handler->xattr_name,
- NULL, 0, flags);
+ if (trans)
+ ret = btrfs_setxattr(trans, inode, handler->xattr_name,
+ NULL, 0, flags);
+ else
+ ret = btrfs_setxattr_trans(NULL, inode,
+ handler->xattr_name, NULL, 0,
+ flags);
if (ret)
return ret;
@@ -84,14 +89,23 @@ static int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
ret = handler->validate(value, value_len);
if (ret)
return ret;
- ret = btrfs_setxattr_trans(trans, inode, handler->xattr_name,
- value, value_len, flags);
+ if (trans)
+ ret = btrfs_setxattr(trans, inode, handler->xattr_name, value,
+ value_len, flags);
+ else
+ ret = btrfs_setxattr_trans(NULL, inode, handler->xattr_name,
+ value, value_len, flags);
+
if (ret)
return ret;
ret = handler->apply(inode, value, value_len);
if (ret) {
- btrfs_setxattr_trans(trans, inode, handler->xattr_name,
- NULL, 0, flags);
+ if (trans)
+ btrfs_setxattr(trans, inode, handler->xattr_name, NULL,
+ 0, flags);
+ else
+ btrfs_setxattr_trans(NULL, inode, handler->xattr_name,
+ NULL, 0, flags);
return ret;
}
@@ -358,13 +372,13 @@ static int inherit_props(struct btrfs_trans_handle *trans,
if (ret)
return ret;
- ret = btrfs_setxattr_trans(trans, inode, h->xattr_name, value,
- strlen(value), 0);
+ ret = btrfs_setxattr(trans, inode, h->xattr_name, value,
+ strlen(value), 0);
if (!ret) {
ret = h->apply(inode, value, strlen(value));
if (ret)
- btrfs_setxattr_trans(trans, inode, h->xattr_name,
- NULL, 0, 0);
+ btrfs_setxattr(trans, inode, h->xattr_name,
+ NULL, 0, 0);
else
set_bit(BTRFS_INODE_HAS_PROPS,
&BTRFS_I(inode)->runtime_flags);
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index 4c447b1f32e5..623d508f21a6 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -86,6 +86,8 @@ int btrfs_setxattr(struct btrfs_trans_handle *trans, struct inode *inode,
size_t name_len = strlen(name);
int ret = 0;
+ ASSERT(trans);
+
if (name_len + size > BTRFS_MAX_XATTR_SIZE(root->fs_info))
return -ENOSPC;
@@ -437,8 +439,8 @@ static int btrfs_initxattrs(struct inode *inode,
}
strcpy(name, XATTR_SECURITY_PREFIX);
strcpy(name + XATTR_SECURITY_PREFIX_LEN, xattr->name);
- err = btrfs_setxattr_trans(trans, inode, name, xattr->value,
- xattr->value_len, 0);
+ err = btrfs_setxattr(trans, inode, name, xattr->value,
+ xattr->value_len, 0);
kfree(name);
if (err < 0)
break;
--
2.17.1
next prev parent reply other threads:[~2019-04-12 8:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-12 8:02 [PATCH 0/6] cleanup property and extended attribute set Anand Jain
2019-04-12 8:02 ` [PATCH 1/6] btrfs: rename btrfs_setxattr to btrfs_setxattr_trans Anand Jain
2019-04-12 8:02 ` [PATCH 2/6] btrfs: rename do_setxattr to btrfs_setxattr Anand Jain
2019-04-12 8:02 ` [PATCH 3/6] btrfs: declare btrfs_setxattr as a non static function Anand Jain
2019-04-12 8:02 ` [PATCH 4/6] btrfs: remove redundant readonly root check in btrfs_setxattr_trans Anand Jain
2019-04-12 8:02 ` Anand Jain [this message]
2019-04-12 8:02 ` [PATCH 6/6] btrfs: cleanup btrfs_setxattr_trans drop trans arg Anand Jain
2019-04-12 9:33 ` [PATCH 0/6] cleanup property and extended attribute set Anand Jain
2019-04-15 19:01 ` David Sterba
2019-04-15 22:01 ` Anand Jain
2019-04-17 9:31 ` David Sterba
2019-04-17 10:24 ` Anand Jain
2019-04-17 10:40 ` Anand Jain
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=20190412080259.5192-6-anand.jain@oracle.com \
--to=anand.jain@oracle.com \
--cc=linux-btrfs@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).