diff options
author | 2024-07-01 16:23:54 -0400 | |
---|---|---|
committer | 2024-07-10 09:53:39 -0400 | |
commit | b02f973e67589cf617f229250e2a738ab62ca666 (patch) | |
tree | 513191b5b56aee0d5b6111d1ce2a1fd1878496cb | |
parent | closures: fix closure_sync + closure debugging (diff) | |
download | wireguard-linux-b02f973e67589cf617f229250e2a738ab62ca666.tar.xz wireguard-linux-b02f973e67589cf617f229250e2a738ab62ca666.zip |
bcachefs: Fix bch2_inode_insert() race path for tmpfiles
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to '')
-rw-r--r-- | fs/bcachefs/fs.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index f9c9a95d7d4c..1768b2678b38 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -194,6 +194,12 @@ static struct bch_inode_info *bch2_inode_insert(struct bch_fs *c, struct bch_ino * discard_new_inode() expects it to be set... */ inode->v.i_flags |= I_NEW; + /* + * We don't want bch2_evict_inode() to delete the inode on disk, + * we just raced and had another inode in cache. Normally new + * inodes don't have nlink == 0 - except tmpfiles do... + */ + set_nlink(&inode->v, 1); discard_new_inode(&inode->v); inode = old; } else { |