Skip to content

Commit 0b5e3ee

Browse files
committed
bcachefs: Improve inode deletion code
It had some silly redundancies. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
1 parent e36c877 commit 0b5e3ee

File tree

1 file changed

+14
-31
lines changed

1 file changed

+14
-31
lines changed

fs/bcachefs/inode.c

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -542,12 +542,12 @@ int bch2_inode_create(struct btree_trans *trans,
542542
int bch2_inode_rm(struct bch_fs *c, u64 inode_nr, bool cached)
543543
{
544544
struct btree_trans trans;
545-
struct btree_iter *iter;
545+
struct btree_iter *iter = NULL;
546546
struct bkey_i_inode_generation delete;
547547
struct bpos start = POS(inode_nr, 0);
548548
struct bpos end = POS(inode_nr + 1, 0);
549+
struct bch_inode_unpacked inode_u;
549550
struct bkey_s_c k;
550-
u64 bi_generation;
551551
int ret;
552552

553553
bch2_trans_init(&trans, c, 0, 0);
@@ -571,8 +571,6 @@ int bch2_inode_rm(struct bch_fs *c, u64 inode_nr, bool cached)
571571
retry:
572572
bch2_trans_begin(&trans);
573573

574-
bi_generation = 0;
575-
576574
if (cached) {
577575
iter = bch2_trans_get_iter(&trans, BTREE_ID_inodes, POS(0, inode_nr),
578576
BTREE_ITER_CACHED|BTREE_ITER_INTENT);
@@ -587,41 +585,26 @@ int bch2_inode_rm(struct bch_fs *c, u64 inode_nr, bool cached)
587585
if (ret)
588586
goto err;
589587

590-
bch2_fs_inconsistent_on(k.k->type != KEY_TYPE_inode, trans.c,
591-
"inode %llu not found when deleting",
592-
inode_nr);
593-
594-
switch (k.k->type) {
595-
case KEY_TYPE_inode: {
596-
struct bch_inode_unpacked inode_u;
597-
598-
if (!bch2_inode_unpack(bkey_s_c_to_inode(k), &inode_u))
599-
bi_generation = inode_u.bi_generation + 1;
600-
break;
601-
}
602-
case KEY_TYPE_inode_generation: {
603-
struct bkey_s_c_inode_generation g =
604-
bkey_s_c_to_inode_generation(k);
605-
bi_generation = le32_to_cpu(g.v->bi_generation);
606-
break;
607-
}
588+
if (k.k->type != KEY_TYPE_inode) {
589+
bch2_fs_inconsistent(trans.c,
590+
"inode %llu not found when deleting",
591+
inode_nr);
592+
ret = -EIO;
593+
goto err;
608594
}
609595

610-
if (!bi_generation) {
611-
bkey_init(&delete.k);
612-
delete.k.p.offset = inode_nr;
613-
} else {
614-
bkey_inode_generation_init(&delete.k_i);
615-
delete.k.p.offset = inode_nr;
616-
delete.v.bi_generation = cpu_to_le32(bi_generation);
617-
}
596+
bch2_inode_unpack(bkey_s_c_to_inode(k), &inode_u);
597+
598+
bkey_inode_generation_init(&delete.k_i);
599+
delete.k.p = iter->pos;
600+
delete.v.bi_generation = cpu_to_le32(inode_u.bi_generation + 1);
618601

619602
bch2_trans_update(&trans, iter, &delete.k_i, 0);
620603

621604
ret = bch2_trans_commit(&trans, NULL, NULL,
622605
BTREE_INSERT_NOFAIL);
623-
bch2_trans_iter_put(&trans, iter);
624606
err:
607+
bch2_trans_iter_put(&trans, iter);
625608
if (ret == -EINTR)
626609
goto retry;
627610

0 commit comments

Comments
 (0)