diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-10-15 22:53:27 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2020-10-15 22:53:27 -0400 |
commit | 7df1badafb6393d4ca7a602a47c3acab7afe3348 (patch) | |
tree | f067fa867a86f40d0ce3dab93e1d2dee14d2b1d8 /libbcachefs/journal.c | |
parent | 487ddeb03c574e902c5b749b4307e87e2150976a (diff) |
Update bcachefs sources to 0568ed4886 bcachefs: Fix copygc dying on startup
Diffstat (limited to 'libbcachefs/journal.c')
-rw-r--r-- | libbcachefs/journal.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libbcachefs/journal.c b/libbcachefs/journal.c index 210ad1b0..b8b71990 100644 --- a/libbcachefs/journal.c +++ b/libbcachefs/journal.c @@ -18,6 +18,8 @@ #include <trace/events/bcachefs.h> +static inline struct journal_buf *journal_seq_to_buf(struct journal *, u64); + static bool __journal_entry_is_open(union journal_res_state state) { return state.cur_entry_offset < JOURNAL_ENTRY_CLOSED_VAL; @@ -305,6 +307,19 @@ u64 bch2_inode_journal_seq(struct journal *j, u64 inode) 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) { |