summaryrefslogtreecommitdiff
path: root/fs/bcachefs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/bcachefs/inode.c')
-rw-r--r--fs/bcachefs/inode.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c
index 746173f15ae3..81feb47fe8f9 100644
--- a/fs/bcachefs/inode.c
+++ b/fs/bcachefs/inode.c
@@ -628,16 +628,19 @@ err:
return ret;
}
-int bch2_inode_find_by_inum_trans(struct btree_trans *trans, u64 inode_nr,
- struct bch_inode_unpacked *inode)
+int __bch2_inode_find_by_inum_trans(struct btree_trans *trans, u64 inode_nr,
+ struct bch_inode_unpacked *inode,
+ unsigned flags)
{
struct btree_iter *iter;
struct bkey_s_c k;
int ret;
iter = bch2_trans_get_iter(trans, BTREE_ID_INODES,
- POS(0, inode_nr), BTREE_ITER_CACHED);
- k = bch2_btree_iter_peek_cached(iter);
+ POS(0, inode_nr), flags);
+ k = (flags & BTREE_ITER_TYPE) == BTREE_ITER_CACHED
+ ? bch2_btree_iter_peek_cached(iter)
+ : bch2_btree_iter_peek_slot(iter);
ret = bkey_err(k);
if (ret)
goto err;
@@ -650,6 +653,14 @@ err:
return ret;
}
+int bch2_inode_find_by_inum_trans(struct btree_trans *trans, u64 inode_nr,
+ struct bch_inode_unpacked *inode)
+{
+ return __bch2_inode_find_by_inum_trans(trans, inode_nr,
+ inode, BTREE_ITER_CACHED);
+
+}
+
int bch2_inode_find_by_inum(struct bch_fs *c, u64 inode_nr,
struct bch_inode_unpacked *inode)
{