summaryrefslogtreecommitdiff
path: root/libbcachefs/fs-common.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-04-13 10:24:08 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-04-13 10:24:15 -0400
commit967c8704989f6194dc40ea884b5d0f713d4fb74c (patch)
treed4a317ed7405e3f4174604a6c5450d44e98af923 /libbcachefs/fs-common.c
parentb422ff58ba8eedcfef3b67b66468660f07b0cfc1 (diff)
Update bcachefs sources to 8eca47e4d5 bcachefs: Improved check_directory_structure()
Diffstat (limited to 'libbcachefs/fs-common.c')
-rw-r--r--libbcachefs/fs-common.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libbcachefs/fs-common.c b/libbcachefs/fs-common.c
index 281a6135..34d69c3f 100644
--- a/libbcachefs/fs-common.c
+++ b/libbcachefs/fs-common.c
@@ -110,8 +110,6 @@ int bch2_link_trans(struct btree_trans *trans, u64 dir_inum,
inode_u->bi_ctime = now;
bch2_inode_nlink_inc(inode_u);
- inode_u->bi_flags |= BCH_INODE_BACKPTR_UNTRUSTED;
-
dir_iter = bch2_inode_peek(trans, dir_u, dir_inum, 0);
ret = PTR_ERR_OR_ZERO(dir_iter);
if (ret)
@@ -175,6 +173,12 @@ int bch2_unlink_trans(struct btree_trans *trans,
if (ret)
goto err;
+ if (inode_u->bi_dir == k.k->p.inode &&
+ inode_u->bi_dir_offset == k.k->p.offset) {
+ inode_u->bi_dir = 0;
+ inode_u->bi_dir_offset = 0;
+ }
+
dir_u->bi_mtime = dir_u->bi_ctime = inode_u->bi_ctime = now;
dir_u->bi_nlink -= S_ISDIR(inode_u->bi_mode);
bch2_inode_nlink_dec(inode_u);