summaryrefslogtreecommitdiff
path: root/libbcachefs/acl.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/acl.c')
-rw-r--r--libbcachefs/acl.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/libbcachefs/acl.c b/libbcachefs/acl.c
index d03adc36..307824d6 100644
--- a/libbcachefs/acl.c
+++ b/libbcachefs/acl.c
@@ -279,7 +279,7 @@ struct posix_acl *bch2_get_acl(struct inode *vinode, int type, bool rcu)
if (rcu)
return ERR_PTR(-ECHILD);
- struct btree_trans *trans = bch2_trans_get(c);
+ CLASS(btree_trans, trans)(c);
retry:
bch2_trans_begin(trans);
@@ -304,7 +304,6 @@ err:
set_cached_acl(&inode->v, type, acl);
bch2_trans_iter_exit(trans, &iter);
- bch2_trans_put(trans);
return acl;
}
@@ -350,8 +349,8 @@ int bch2_set_acl(struct mnt_idmap *idmap,
umode_t mode;
int ret;
- mutex_lock(&inode->ei_update_lock);
- struct btree_trans *trans = bch2_trans_get(c);
+ guard(mutex)(&inode->ei_update_lock);
+ CLASS(btree_trans, trans)(c);
retry:
bch2_trans_begin(trans);
acl = _acl;
@@ -385,17 +384,13 @@ btree_err:
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
goto retry;
if (unlikely(ret))
- goto err;
+ return ret;
bch2_inode_update_after_write(trans, inode, &inode_u,
ATTR_CTIME|ATTR_MODE);
set_cached_acl(&inode->v, type, acl);
-err:
- bch2_trans_put(trans);
- mutex_unlock(&inode->ei_update_lock);
-
- return ret;
+ return 0;
}
int bch2_acl_chmod(struct btree_trans *trans, subvol_inum inum,