mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
bcachefs: journal->buf_lock
Add a new lock for synchronizing between journal IO path and btree write buffer flush. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
0ba9375a11
commit
b05c0e9370
@ -1219,6 +1219,7 @@ int bch2_fs_journal_init(struct journal *j)
|
||||
static struct lock_class_key res_key;
|
||||
unsigned i;
|
||||
|
||||
mutex_init(&j->buf_lock);
|
||||
spin_lock_init(&j->lock);
|
||||
spin_lock_init(&j->err_lock);
|
||||
init_waitqueue_head(&j->wait);
|
||||
|
@ -1885,9 +1885,11 @@ CLOSURE_CALLBACK(bch2_journal_write)
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
mutex_lock(&j->buf_lock);
|
||||
journal_buf_realloc(j, w);
|
||||
|
||||
ret = bch2_journal_write_prep(j, w);
|
||||
mutex_unlock(&j->buf_lock);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
|
@ -181,6 +181,12 @@ struct journal {
|
||||
*/
|
||||
darray_u64 early_journal_entries;
|
||||
|
||||
/*
|
||||
* Protects journal_buf->data, when accessing without a jorunal
|
||||
* reservation: for synchronization between the btree write buffer code
|
||||
* and the journal write path:
|
||||
*/
|
||||
struct mutex buf_lock;
|
||||
/*
|
||||
* Two journal entries -- one is currently open for new entries, the
|
||||
* other is possibly being written out.
|
||||
|
Loading…
Reference in New Issue
Block a user