From 33b3b1dc0f685b4542a631a0ca053380613829a6 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 20 Nov 2020 19:27:57 -0500 Subject: [PATCH] bcachefs: Optimize bch2_journal_flush_seq_async() Avoid taking the journal lock if we don't have to. Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- fs/bcachefs/journal.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/bcachefs/journal.c b/fs/bcachefs/journal.c index 27fcb378790b..759a04346cde 100644 --- a/fs/bcachefs/journal.c +++ b/fs/bcachefs/journal.c @@ -547,12 +547,20 @@ void bch2_journal_entry_res_resize(struct journal *j, * necessary */ int bch2_journal_flush_seq_async(struct journal *j, u64 seq, - struct closure *parent) + struct closure *parent) { struct journal_buf *buf; int ret = 0; + if (seq <= j->err_seq) + return -EIO; + + if (seq <= j->seq_ondisk) + return 1; + spin_lock(&j->lock); + + /* Recheck under lock: */ if (seq <= j->err_seq) { ret = -EIO; goto out;