- ret = bch2_set_acl_trans(&trans,
- &inode->ei_inode,
- &inode->ei_str_hash,
- acl, type) ?:
- bch2_write_inode_trans(&trans, inode, &inode_u,
- inode_update_for_set_acl_fn,
- (void *)(unsigned long) mode) ?:
- bch2_trans_commit(&trans, NULL,
- &inode->ei_journal_seq,
- BTREE_INSERT_ATOMIC|
- BTREE_INSERT_NOUNLOCK);
- if (ret == -EINTR)
+ ret = bch2_set_acl_trans(&trans, inode_inum(inode), &inode_u, acl, type);
+ if (ret)
+ goto btree_err;
+
+ inode_u.bi_ctime = bch2_current_time(c);
+ inode_u.bi_mode = mode;
+
+ ret = bch2_inode_write(&trans, &inode_iter, &inode_u) ?:
+ bch2_trans_commit(&trans, NULL, NULL, 0);
+btree_err:
+ bch2_trans_iter_exit(&trans, &inode_iter);
+
+ if (bch2_err_matches(ret, BCH_ERR_transaction_restart))