summaryrefslogtreecommitdiff
path: root/fs/bcachefs/inode.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-05-28 05:06:18 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:04 -0400
commitbff796ae6539b50bb3fe595e8db7b72e3255a34d (patch)
tree70b274633607982f1d5bdabbd1a84136ea16f3d4 /fs/bcachefs/inode.c
parentd797ca3d8ed3b493d6558426fb4b4980ff186c37 (diff)
bcachefs: Fix pathalogical behaviour with inode sharding by cpu ID
If the transactior restarts on a different CPU, it could end up needing to read in a different btree node, which makes another transaction restart more likely... Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/inode.c')
-rw-r--r--fs/bcachefs/inode.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c
index 0af493c8669d..524da018e9d9 100644
--- a/fs/bcachefs/inode.c
+++ b/fs/bcachefs/inode.c
@@ -472,7 +472,7 @@ static inline u32 bkey_generation(struct bkey_s_c k)
struct btree_iter *bch2_inode_create(struct btree_trans *trans,
struct bch_inode_unpacked *inode_u,
- u32 snapshot)
+ u32 snapshot, u64 cpu)
{
struct bch_fs *c = trans->c;
struct btree_iter *iter = NULL;
@@ -482,8 +482,6 @@ struct btree_iter *bch2_inode_create(struct btree_trans *trans,
unsigned bits = (c->opts.inodes_32bit ? 31 : 63);
if (c->opts.shard_inode_numbers) {
- u64 cpu = raw_smp_processor_id();
-
bits -= c->inode_shard_bits;
min = (cpu << bits);