bcachefs: Kill journal buf bloom filter
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 4 Nov 2021 02:33:32 +0000 (22:33 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:16 +0000 (17:09 -0400)
This was used for recording which inodes have been modified by in flight
journal writes, but was broken and has been superceded.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_update_leaf.c
fs/bcachefs/fs.c
fs/bcachefs/journal.c
fs/bcachefs/journal.h
fs/bcachefs/journal_types.h

index b9c93182f2de5dc95991724c7f4c8a9479813ca2..4e9f7e3b5a61a92b0b924d0351dc522a1cf424ed 100644 (file)
@@ -363,9 +363,6 @@ static inline void do_btree_insert_one(struct btree_trans *trans,
                                      i->level,
                                      i->k);
 
-               bch2_journal_set_has_inode(j, &trans->journal_res,
-                                          i->k->k.p.inode);
-
                if (trans->journal_seq)
                        *trans->journal_seq = trans->journal_res.seq;
        }
index 64627543fe1760342d9362a47f588e999aa03d5b..12178bd15c344ba5dcc0121e3735de7e722a9c1b 100644 (file)
@@ -58,8 +58,6 @@ static void journal_seq_copy(struct bch_fs *c,
                if (old >= journal_seq)
                        break;
        } while ((v = atomic64_cmpxchg(dst_seq, old, journal_seq)) != old);
-
-       bch2_journal_set_has_inum(&c->journal, dst->v.i_ino, journal_seq);
 }
 
 static void __pagecache_lock_put(struct pagecache_lock *lock, long i)
@@ -258,8 +256,6 @@ struct inode *bch2_vfs_inode_get(struct bch_fs *c, subvol_inum inum)
 
        bch2_vfs_inode_init(c, inum, inode, &inode_u);
 
-       inode->ei_journal_seq = bch2_inode_journal_seq(&c->journal, inum.inum);
-
        unlock_new_inode(&inode->v);
 
        return &inode->v;
index f72e3124d3517f26a77089d34e4c808ed295b4da..1abd1ac560e6d8e5fbcbacf9be1eb5d669c4e40c 100644 (file)
@@ -87,8 +87,6 @@ static void bch2_journal_buf_init(struct journal *j)
        buf->must_flush = false;
        buf->separate_flush = false;
 
-       memset(buf->has_inode, 0, sizeof(buf->has_inode));
-
        memset(buf->data, 0, sizeof(*buf->data));
        buf->data->seq  = cpu_to_le64(journal_cur_seq(j));
        buf->data->u64s = 0;
@@ -334,55 +332,6 @@ static void journal_write_work(struct work_struct *work)
        journal_entry_close(j);
 }
 
-/*
- * Given an inode number, if that inode number has data in the journal that
- * hasn't yet been flushed, return the journal sequence number that needs to be
- * flushed:
- */
-u64 bch2_inode_journal_seq(struct journal *j, u64 inode)
-{
-       size_t h = hash_64(inode, ilog2(sizeof(j->buf[0].has_inode) * 8));
-       union journal_res_state s;
-       unsigned i;
-       u64 seq;
-
-
-       spin_lock(&j->lock);
-       seq = journal_cur_seq(j);
-       s = READ_ONCE(j->reservations);
-       i = s.idx;
-
-       while (1) {
-               if (test_bit(h, j->buf[i].has_inode))
-                       goto out;
-
-               if (i == s.unwritten_idx)
-                       break;
-
-               i = (i - 1) & JOURNAL_BUF_MASK;
-               seq--;
-       }
-
-       seq = 0;
-out:
-       spin_unlock(&j->lock);
-
-       return seq;
-}
-
-void bch2_journal_set_has_inum(struct journal *j, u64 inode, u64 seq)
-{
-       size_t h = hash_64(inode, ilog2(sizeof(j->buf[0].has_inode) * 8));
-       struct journal_buf *buf;
-
-       spin_lock(&j->lock);
-
-       if ((buf = journal_seq_to_buf(j, seq)))
-               set_bit(h, buf->has_inode);
-
-       spin_unlock(&j->lock);
-}
-
 static int __journal_res_get(struct journal *j, struct journal_res *res,
                             unsigned flags)
 {
index 99fd253648bf675960d0f348169010a05744ff23..2cfb6c7f0d148100ca41c013f4786c391f6c4f10 100644 (file)
@@ -141,9 +141,6 @@ static inline u64 journal_cur_seq(struct journal *j)
        return j->pin.back - 1;
 }
 
-u64 bch2_inode_journal_seq(struct journal *, u64);
-void bch2_journal_set_has_inum(struct journal *, u64, u64);
-
 static inline int journal_state_count(union journal_res_state s, int idx)
 {
        switch (idx) {
@@ -163,18 +160,6 @@ static inline void journal_state_inc(union journal_res_state *s)
        s->buf3_count += s->idx == 3;
 }
 
-static inline void bch2_journal_set_has_inode(struct journal *j,
-                                             struct journal_res *res,
-                                             u64 inum)
-{
-       struct journal_buf *buf = &j->buf[res->idx];
-       unsigned long bit = hash_64(inum, ilog2(sizeof(buf->has_inode) * 8));
-
-       /* avoid atomic op if possible */
-       if (unlikely(!test_bit(bit, buf->has_inode)))
-               set_bit(bit, buf->has_inode);
-}
-
 /*
  * Amount of space that will be taken up by some keys in the journal (i.e.
  * including the jset header)
index 0647a53eb35c02baa4c23591957688d750ae89f1..0fc6569ef14924382bc8fbe1ba4dde3f0c9a120f 100644 (file)
@@ -34,8 +34,6 @@ struct journal_buf {
        bool                    noflush;        /* write has already been kicked off, and was noflush */
        bool                    must_flush;     /* something wants a flush */
        bool                    separate_flush;
-       /* bloom filter: */
-       unsigned long           has_inode[1024 / sizeof(unsigned long)];
 };
 
 /*