bcachefs: Kill BTREE_INSERT_ATOMIC
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 23 Dec 2019 04:39:28 +0000 (23:39 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:33 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
15 files changed:
fs/bcachefs/acl.c
fs/bcachefs/alloc_background.c
fs/bcachefs/btree_update.h
fs/bcachefs/btree_update_leaf.c
fs/bcachefs/ec.c
fs/bcachefs/fs-io.c
fs/bcachefs/fs.c
fs/bcachefs/fsck.c
fs/bcachefs/inode.c
fs/bcachefs/io.c
fs/bcachefs/migrate.c
fs/bcachefs/move.c
fs/bcachefs/recovery.c
fs/bcachefs/reflink.c
fs/bcachefs/xattr.c

index 4e631e04cf0c3eb59bffebed0676bc66894f0cb7..5a8d8311c08dd1ac61baf872a7da9f0c90760765 100644 (file)
@@ -326,7 +326,6 @@ retry:
        ret =   bch2_inode_write(&trans, inode_iter, &inode_u) ?:
                bch2_trans_commit(&trans, NULL,
                                  &inode->ei_journal_seq,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOUNLOCK);
 btree_err:
        if (ret == -EINTR)
index 7b9079a740efd81035becad45d04a9f26e354904..bd3e46d066bdd5134fa591a98f59a5e68d6e0e95 100644 (file)
@@ -316,7 +316,6 @@ retry:
 
        bch2_trans_update(trans, iter, &a->k_i);
        ret = bch2_trans_commit(trans, NULL, NULL,
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_NOFAIL|
                                BTREE_INSERT_NOMARK|
                                flags);
@@ -913,7 +912,6 @@ retry:
         */
        ret = bch2_trans_commit(trans, NULL,
                                invalidating_cached_data ? journal_seq : NULL,
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_NOUNLOCK|
                                BTREE_INSERT_NOCHECK_RW|
                                BTREE_INSERT_NOFAIL|
index d72da179f866c0d629a76d259512ac0828deb189..aa87477b51e1c1619c76275acc7087762bc2dd99 100644 (file)
@@ -16,7 +16,6 @@ void bch2_btree_journal_key(struct btree_trans *, struct btree_iter *,
                            struct bkey_i *);
 
 enum {
-       __BTREE_INSERT_ATOMIC,
        __BTREE_INSERT_NOUNLOCK,
        __BTREE_INSERT_NOFAIL,
        __BTREE_INSERT_NOCHECK_RW,
@@ -35,12 +34,6 @@ enum {
        __BCH_HASH_SET_MUST_REPLACE,
 };
 
-/*
- * Don't drop/retake locks before doing btree update, instead return -EINTR if
- * we had to drop locks for any reason
- */
-#define BTREE_INSERT_ATOMIC            (1 << __BTREE_INSERT_ATOMIC)
-
 /*
  * Don't drop locks _after_ successfully updating btree:
  */
@@ -101,8 +94,7 @@ int __bch2_trans_commit(struct btree_trans *);
  * This is main entry point for btree updates.
  *
  * Return values:
- * -EINTR: locking changed, this function should be called again. Only returned
- *  if passed BTREE_INSERT_ATOMIC.
+ * -EINTR: locking changed, this function should be called again.
  * -EROFS: filesystem read only
  * -EIO: journal or btree node IO error
  */
index 1112bdb689dce6157d68af97cdd8df428b34c8b4..94c1e1e2118a59f9229bacedd52bc301ac54cf17 100644 (file)
@@ -298,8 +298,6 @@ static inline void btree_insert_entry_checks(struct btree_trans *trans,
        BUG_ON(bkey_cmp(bkey_start_pos(&i->k->k), i->iter->pos));
        EBUG_ON((i->iter->flags & BTREE_ITER_IS_EXTENTS) &&
                bkey_cmp(i->k->k.p, i->iter->l[0].b->key.k.p) > 0);
-       EBUG_ON((i->iter->flags & BTREE_ITER_IS_EXTENTS) &&
-               !(trans->flags & BTREE_INSERT_ATOMIC));
 
        BUG_ON(debug_check_bkeys(c) &&
               !bkey_deleted(&i->k->k) &&
@@ -641,8 +639,8 @@ int bch2_trans_commit_error(struct btree_trans *trans,
 
                /*
                 * if the split succeeded without dropping locks the insert will
-                * still be atomic (in the BTREE_INSERT_ATOMIC sense, what the
-                * caller peeked() and is overwriting won't have changed)
+                * still be atomic (what the caller peeked() and is overwriting
+                * won't have changed)
                 */
 #if 0
                /*
@@ -713,13 +711,6 @@ int bch2_trans_commit_error(struct btree_trans *trans,
                        return ret2;
                }
 
-               /*
-                * BTREE_ITER_ATOMIC means we have to return -EINTR if we
-                * dropped locks:
-                */
-               if (!(flags & BTREE_INSERT_ATOMIC))
-                       return 0;
-
                trace_trans_restart_atomic(trans->ip);
        }
 
@@ -756,9 +747,6 @@ int __bch2_trans_commit(struct btree_trans *trans)
        if (!trans->nr_updates)
                goto out_noupdates;
 
-       /* for the sake of sanity: */
-       EBUG_ON(trans->nr_updates > 1 && !(trans->flags & BTREE_INSERT_ATOMIC));
-
        if (trans->flags & BTREE_INSERT_GC_LOCK_HELD)
                lockdep_assert_held(&trans->c->gc_lock);
 
@@ -795,8 +783,6 @@ out:
        if (likely(!(trans->flags & BTREE_INSERT_NOCHECK_RW)))
                percpu_ref_put(&trans->c->writes);
 out_noupdates:
-       EBUG_ON(!(trans->flags & BTREE_INSERT_ATOMIC) && ret == -EINTR);
-
        trans_for_each_iter_all(trans, iter)
                iter->flags &= ~BTREE_ITER_KEEP_UNTIL_COMMIT;
 
@@ -897,7 +883,6 @@ retry:
 
                bch2_trans_update(trans, iter, &delete);
                ret = bch2_trans_commit(trans, NULL, journal_seq,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL);
                if (ret)
                        break;
index ae07af49af02d97f6603bb3923487b9165894be7..a6bc9355c7509512962d6f65646b7304ca18ed18 100644 (file)
@@ -739,7 +739,6 @@ found_slot:
        bch2_trans_update(&trans, iter, &stripe->k_i);
 
        ret = bch2_trans_commit(&trans, NULL, NULL,
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_NOFAIL);
 err:
        if (ret == -EINTR)
@@ -822,7 +821,6 @@ static int ec_stripe_update_ptrs(struct bch_fs *c,
                bch2_trans_update(&trans, iter, sk.k);
 
                ret = bch2_trans_commit(&trans, NULL, NULL,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL|
                                        BTREE_INSERT_USE_RESERVE);
                if (ret == -EINTR)
@@ -1235,7 +1233,6 @@ static int __bch2_stripe_write_key(struct btree_trans *trans,
        bch2_trans_update(trans, iter, &new_key->k_i);
 
        return bch2_trans_commit(trans, NULL, NULL,
-                                BTREE_INSERT_ATOMIC|
                                 BTREE_INSERT_NOFAIL|flags);
 }
 
index f766bbc35cee1d462becd50d3cb8a77a0858add8..15b0d20b2f81eaabe90b10ae3f78dba3abc945ce 100644 (file)
@@ -2558,7 +2558,6 @@ reassemble:
 
                ret = bch2_trans_commit(&trans, &disk_res,
                                        &inode->ei_journal_seq,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL|
                                        commit_flags);
                bch2_disk_reservation_put(c, &disk_res);
index c20eaa7418c26bf11388a26088d501ed7ca3051b..3cada7cc354aac54688efd06720fef3f9b06e16e 100644 (file)
@@ -143,7 +143,6 @@ retry:
                bch2_inode_write(&trans, iter, &inode_u) ?:
                bch2_trans_commit(&trans, NULL,
                                  &inode->ei_journal_seq,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOUNLOCK|
                                  BTREE_INSERT_NOFAIL);
        if (ret == -EINTR)
@@ -279,7 +278,6 @@ retry:
                goto err_before_quota;
 
        ret   = bch2_trans_commit(&trans, NULL, &journal_seq,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOUNLOCK);
        if (unlikely(ret)) {
                bch2_quota_acct(c, bch_qid(&inode_u), Q_INO, -1,
@@ -409,7 +407,6 @@ static int __bch2_link(struct bch_fs *c,
                                        &dentry->d_name) ?:
                        bch2_trans_commit(&trans, NULL,
                                        &inode->ei_journal_seq,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOUNLOCK);
        } while (ret == -EINTR);
 
@@ -466,7 +463,6 @@ static int bch2_unlink(struct inode *vdir, struct dentry *dentry)
                                          &inode_u, &dentry->d_name) ?:
                        bch2_trans_commit(&trans, NULL,
                                          &dir->ei_journal_seq,
-                                         BTREE_INSERT_ATOMIC|
                                          BTREE_INSERT_NOUNLOCK|
                                          BTREE_INSERT_NOFAIL);
        } while (ret == -EINTR);
@@ -598,7 +594,6 @@ retry:
                                  mode) ?:
                bch2_trans_commit(&trans, NULL,
                                  &journal_seq,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOUNLOCK);
        if (ret == -EINTR)
                goto retry;
@@ -733,7 +728,6 @@ retry:
        ret =   bch2_inode_write(&trans, inode_iter, &inode_u) ?:
                bch2_trans_commit(&trans, NULL,
                                  &inode->ei_journal_seq,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOUNLOCK|
                                  BTREE_INSERT_NOFAIL);
 btree_err:
index a0fdd2ba92f614069e1b0b936431aa06daf6489d..cd230dc109841d7a435e21df317151c4626bc0d0 100644 (file)
@@ -79,7 +79,6 @@ static int remove_dirent(struct btree_trans *trans,
                         struct bkey_s_c_dirent dirent)
 {
        return __bch2_trans_do(trans, NULL, NULL,
-                              BTREE_INSERT_ATOMIC|
                               BTREE_INSERT_NOFAIL|
                               BTREE_INSERT_LAZY_RW,
                               TRANS_RESET_MEM,
@@ -99,7 +98,6 @@ static int reattach_inode(struct bch_fs *c,
        name = (struct qstr) QSTR(name_buf);
 
        ret = bch2_trans_do(c, NULL, NULL,
-                           BTREE_INSERT_ATOMIC|
                            BTREE_INSERT_LAZY_RW,
                bch2_link_trans(&trans, lostfound_inode->bi_inum,
                                inum, &dir_u, &inode_u, &name));
@@ -199,7 +197,6 @@ static int hash_redo_key(const struct bch_hash_desc desc,
        return  bch2_hash_set(trans, desc, &h->info, k_iter->pos.inode,
                              tmp, BCH_HASH_SET_MUST_CREATE) ?:
                bch2_trans_commit(trans, NULL, NULL,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOFAIL|
                                  BTREE_INSERT_LAZY_RW);
 }
@@ -213,7 +210,6 @@ static int fsck_hash_delete_at(struct btree_trans *trans,
 retry:
        ret   = bch2_hash_delete_at(trans, desc, info, iter) ?:
                bch2_trans_commit(trans, NULL, NULL,
-                                 BTREE_INSERT_ATOMIC|
                                  BTREE_INSERT_NOFAIL|
                                  BTREE_INSERT_LAZY_RW);
        if (ret == -EINTR) {
@@ -389,7 +385,6 @@ static int check_dirent_hash(struct btree_trans *trans, struct hash_check *h,
        if (fsck_err(c, "dirent with junk at end, was %s (%zu) now %s (%u)",
                     buf, strlen(buf), d->v.d_name, len)) {
                ret = __bch2_trans_do(trans, NULL, NULL,
-                                     BTREE_INSERT_ATOMIC|
                                      BTREE_INSERT_NOFAIL|
                                      BTREE_INSERT_LAZY_RW,
                                      TRANS_RESET_MEM,
@@ -663,7 +658,6 @@ retry:
                        n->v.d_type = mode_to_type(target.bi_mode);
 
                        ret = __bch2_trans_do(&trans, NULL, NULL,
-                                             BTREE_INSERT_ATOMIC|
                                              BTREE_INSERT_NOFAIL|
                                              BTREE_INSERT_LAZY_RW,
                                              TRANS_RESET_MEM,
@@ -808,7 +802,6 @@ create_lostfound:
        bch2_inode_init_early(c, lostfound_inode);
 
        ret = bch2_trans_do(c, NULL, NULL,
-                           BTREE_INSERT_ATOMIC|
                            BTREE_INSERT_NOFAIL|
                            BTREE_INSERT_LAZY_RW,
                bch2_create_trans(&trans,
@@ -1280,7 +1273,6 @@ static int check_inode(struct btree_trans *trans,
                bch2_inode_pack(&p, &u);
 
                ret = __bch2_trans_do(trans, NULL, NULL,
-                                     BTREE_INSERT_ATOMIC|
                                      BTREE_INSERT_NOFAIL|
                                      BTREE_INSERT_LAZY_RW,
                                      TRANS_RESET_MEM,
index e2407dcbcb35e6cd6a1d8d2a638700d84ab751b5..77ac9ab7fc572e9c672d47d8f381dc7b58fe8855 100644 (file)
@@ -496,7 +496,6 @@ int bch2_inode_rm(struct bch_fs *c, u64 inode_nr)
                bch2_trans_update(&trans, iter, &delete.k_i);
 
                ret = bch2_trans_commit(&trans, NULL, NULL,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL);
        } while (ret == -EINTR);
 
index 6e0444f3c4f9ef372a7f3ae4b636a10af35a3d88..4b54506b517c544fcf9cc579d14c97db063998bc 100644 (file)
@@ -313,7 +313,6 @@ int bch2_extent_update(struct btree_trans *trans,
        ret = bch2_trans_commit(trans, disk_res, journal_seq,
                                BTREE_INSERT_NOCHECK_RW|
                                BTREE_INSERT_NOFAIL|
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_USE_RESERVE);
        if (!ret && i_sectors_delta)
                *i_sectors_delta += delta;
@@ -1740,7 +1739,6 @@ retry:
 
        bch2_trans_update(&trans, iter, new.k);
        ret = bch2_trans_commit(&trans, NULL, NULL,
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_NOFAIL|
                                BTREE_INSERT_NOWAIT);
        if (ret == -EINTR)
index 4b59dcd04cce3dd0140c7f87f0acbe3a6cfa30c8..db86420bd64772457da7ba44b8119e06f7fee9bb 100644 (file)
@@ -79,7 +79,6 @@ static int __bch2_dev_usrdata_drop(struct bch_fs *c, unsigned dev_idx, int flags
                bch2_trans_update(&trans, iter, sk.k);
 
                ret = bch2_trans_commit(&trans, NULL, NULL,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL);
 
                /*
index 0aebae33d299d2971ac54d5c10d763b2afd41a60..261e465341cdb92ccd96a643f5bbfbc2724facb7 100644 (file)
@@ -153,7 +153,6 @@ static int bch2_migrate_index_update(struct bch_write_op *op)
 
                ret = bch2_trans_commit(&trans, &op->res,
                                op_journal_seq(op),
-                               BTREE_INSERT_ATOMIC|
                                BTREE_INSERT_NOFAIL|
                                BTREE_INSERT_USE_RESERVE|
                                m->data_opts.btree_insert_flags);
index a3ee2f4749523c4edadd977404590aecbb000cc8..44a1dcdb135d4b0942b97b388365fb968aa2edad 100644 (file)
@@ -309,14 +309,12 @@ retry:
                                          0, -((s64) k->k.size),
                                          BCH_BUCKET_MARK_OVERWRITE) ?:
                      bch2_trans_commit(&trans, &disk_res, NULL,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL|
                                        BTREE_INSERT_LAZY_RW|
                                        BTREE_INSERT_NOMARK_OVERWRITES|
                                        BTREE_INSERT_NO_CLEAR_REPLICAS);
        } else {
                ret = bch2_trans_commit(&trans, &disk_res, NULL,
-                                       BTREE_INSERT_ATOMIC|
                                        BTREE_INSERT_NOFAIL|
                                        BTREE_INSERT_LAZY_RW|
                                        BTREE_INSERT_JOURNAL_REPLAY|
@@ -1009,7 +1007,7 @@ int bch2_fs_initialize(struct bch_fs *c)
        bch2_inode_init_early(c, &lostfound_inode);
 
        err = "error creating lost+found";
-       ret = bch2_trans_do(c, NULL, NULL, BTREE_INSERT_ATOMIC,
+       ret = bch2_trans_do(c, NULL, NULL, 0,
                bch2_create_trans(&trans, BCACHEFS_ROOT_INO,
                                  &root_inode, &lostfound_inode,
                                  &lostfound,
index a65ada691ba1851b3e9ce839f8b7e831f12aa5dd..5cad39fe031f6d9e3d1a62eaf1b27749f21b78f5 100644 (file)
@@ -288,8 +288,7 @@ err:
                    inode_u.bi_size < new_i_size) {
                        inode_u.bi_size = new_i_size;
                        ret2  = bch2_inode_write(&trans, inode_iter, &inode_u) ?:
-                               bch2_trans_commit(&trans, NULL, journal_seq,
-                                                 BTREE_INSERT_ATOMIC);
+                               bch2_trans_commit(&trans, NULL, journal_seq, 0);
                }
        } while (ret2 == -EINTR);
 
index 6cef6c14fc897a7df8588f058919ef2ea3f2b385..806a638508a6ad71dee045fd5c39a4fb4ede7ae1 100644 (file)
@@ -328,8 +328,7 @@ static int bch2_xattr_set_handler(const struct xattr_handler *handler,
        struct bch_inode_info *inode = to_bch_ei(vinode);
        struct bch_fs *c = inode->v.i_sb->s_fs_info;
 
-       return bch2_trans_do(c, NULL, &inode->ei_journal_seq,
-                            BTREE_INSERT_ATOMIC,
+       return bch2_trans_do(c, NULL, &inode->ei_journal_seq, 0,
                        bch2_xattr_set(&trans, inode->v.i_ino,
                                       &inode->ei_str_hash,
                                       name, value, size,