summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/fs-common.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/fs-common.c
parentd797ca3d8ed3b493d6558426fb4b4980ff186c37 (diff)
downloadlinux-bff796ae6539b50bb3fe595e8db7b72e3255a34d.tar.gz
linux-bff796ae6539b50bb3fe595e8db7b72e3255a34d.tar.bz2
linux-bff796ae6539b50bb3fe595e8db7b72e3255a34d.zip
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/fs-common.c')
-rw-r--r--fs/bcachefs/fs-common.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/fs-common.c b/fs/bcachefs/fs-common.c
index 08c6af886df7..00a63fecb976 100644
--- a/fs/bcachefs/fs-common.c
+++ b/fs/bcachefs/fs-common.c
@@ -23,6 +23,7 @@ int bch2_create_trans(struct btree_trans *trans, u64 dir_inum,
struct btree_iter *inode_iter = NULL;
struct bch_hash_info hash = bch2_hash_info_init(c, new_inode);
u64 now = bch2_current_time(c);
+ u64 cpu = raw_smp_processor_id();
u64 dir_offset = 0;
int ret;
@@ -36,7 +37,7 @@ int bch2_create_trans(struct btree_trans *trans, u64 dir_inum,
if (!name)
new_inode->bi_flags |= BCH_INODE_UNLINKED;
- inode_iter = bch2_inode_create(trans, new_inode, U32_MAX);
+ inode_iter = bch2_inode_create(trans, new_inode, U32_MAX, cpu);
ret = PTR_ERR_OR_ZERO(inode_iter);
if (ret)
goto err;