summaryrefslogtreecommitdiff
path: root/libbcachefs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/inode.c')
-rw-r--r--libbcachefs/inode.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/libbcachefs/inode.c b/libbcachefs/inode.c
index fea21e1e..e0d41655 100644
--- a/libbcachefs/inode.c
+++ b/libbcachefs/inode.c
@@ -348,6 +348,8 @@ int bch2_inode_peek(struct btree_trans *trans,
return 0;
err:
bch2_trans_iter_exit(trans, iter);
+ if (!bch2_err_matches(ret, BCH_ERR_transaction_restart))
+ bch_err_msg(trans->c, ret, "looking up inum %u:%llu:", inum.subvol, inum.inum);
return ret;
}
@@ -520,23 +522,25 @@ void bch2_inode_to_text(struct printbuf *out, struct bch_fs *c, struct bkey_s_c
__bch2_inode_unpacked_to_text(out, &inode);
}
-static inline bool bkey_is_deleted_inode(struct bkey_s_c k)
+static inline u64 bkey_inode_flags(struct bkey_s_c k)
{
switch (k.k->type) {
case KEY_TYPE_inode:
- return bkey_s_c_to_inode(k).v->bi_flags &
- cpu_to_le32(BCH_INODE_UNLINKED);
+ return le32_to_cpu(bkey_s_c_to_inode(k).v->bi_flags);
case KEY_TYPE_inode_v2:
- return bkey_s_c_to_inode_v2(k).v->bi_flags &
- cpu_to_le32(BCH_INODE_UNLINKED);
+ return le64_to_cpu(bkey_s_c_to_inode_v2(k).v->bi_flags);
case KEY_TYPE_inode_v3:
- return bkey_s_c_to_inode_v3(k).v->bi_flags &
- cpu_to_le64(BCH_INODE_UNLINKED);
+ return le64_to_cpu(bkey_s_c_to_inode_v3(k).v->bi_flags);
default:
- return false;
+ return 0;
}
}
+static inline bool bkey_is_deleted_inode(struct bkey_s_c k)
+{
+ return bkey_inode_flags(k) & BCH_INODE_UNLINKED;
+}
+
int bch2_trans_mark_inode(struct btree_trans *trans,
enum btree_id btree_id, unsigned level,
struct bkey_s_c old,