Lines Matching refs:journal

36 	struct journal_device *ja = &ca->journal;  in journal_read_bucket()
40 struct jset *j, *data = ca->set->journal.w[0].data; in journal_read_bucket()
159 struct journal_device *ja = &ca->journal; in bch_journal_read()
258 c->journal.seq = list_entry(list->prev, in bch_journal_read()
271 struct journal *j = &c->journal; in bch_journal_mark()
378 if (btree_current_write(b)->journal) { in btree_flush_write()
382 btree_current_write(best)->journal, in btree_flush_write()
383 btree_current_write(b)->journal)) { in btree_flush_write()
391 if (!btree_current_write(b)->journal) { in btree_flush_write()
408 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio()
412 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
426 struct journal_device *ja = &ca->journal; in do_journal_discard()
469 struct bkey *k = &c->journal.key; in journal_reclaim()
475 while (!atomic_read(&fifo_front(&c->journal.pin))) in journal_reclaim()
476 fifo_pop(&c->journal.pin, p); in journal_reclaim()
478 last_seq = last_seq(&c->journal); in journal_reclaim()
483 struct journal_device *ja = &ca->journal; in journal_reclaim()
494 if (c->journal.blocks_free) in journal_reclaim()
503 struct journal_device *ja = &ca->journal; in journal_reclaim()
520 c->journal.blocks_free = c->sb.bucket_size >> c->block_bits; in journal_reclaim()
522 if (!journal_full(&c->journal)) in journal_reclaim()
523 __closure_wake_up(&c->journal.wait); in journal_reclaim()
526 void bch_journal_next(struct journal *j) in bch_journal_next()
555 closure_put(&w->c->journal.io); in journal_write_endio()
562 struct journal *j = container_of(cl, struct journal, io); in journal_write_done()
573 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlock()
575 c->journal.io_in_flight = 0; in journal_write_unlock()
576 spin_unlock(&c->journal.lock); in journal_write_unlock()
580 __releases(c->journal.lock) in journal_write_unlocked()
582 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlocked()
584 struct journal_write *w = c->journal.cur; in journal_write_unlocked()
585 struct bkey *k = &c->journal.key; in journal_write_unlocked()
595 } else if (journal_full(&c->journal)) { in journal_write_unlocked()
597 spin_unlock(&c->journal.lock); in journal_write_unlocked()
603 c->journal.blocks_free -= set_blocks(w->data, block_bytes(c)); in journal_write_unlocked()
615 w->data->last_seq = last_seq(&c->journal); in journal_write_unlocked()
620 bio = &ca->journal.bio; in journal_write_unlocked()
639 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()
642 atomic_dec_bug(&fifo_back(&c->journal.pin)); in journal_write_unlocked()
643 bch_journal_next(&c->journal); in journal_write_unlocked()
646 spin_unlock(&c->journal.lock); in journal_write_unlocked()
656 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write()
658 spin_lock(&c->journal.lock); in journal_write()
663 __releases(c->journal.lock) in journal_try_write()
665 struct closure *cl = &c->journal.io; in journal_try_write()
666 struct journal_write *w = c->journal.cur; in journal_try_write()
670 if (!c->journal.io_in_flight) { in journal_try_write()
671 c->journal.io_in_flight = 1; in journal_try_write()
674 spin_unlock(&c->journal.lock); in journal_try_write()
687 spin_lock(&c->journal.lock); in journal_wait_for_write()
690 struct journal_write *w = c->journal.cur; in journal_wait_for_write()
696 c->journal.blocks_free * c->sb.block_size, in journal_wait_for_write()
701 closure_wait(&c->journal.wait, &cl); in journal_wait_for_write()
703 if (!journal_full(&c->journal)) { in journal_wait_for_write()
721 spin_unlock(&c->journal.lock); in journal_wait_for_write()
727 spin_lock(&c->journal.lock); in journal_wait_for_write()
736 journal.work); in journal_write_work()
737 spin_lock(&c->journal.lock); in journal_write_work()
738 if (c->journal.cur->dirty) in journal_write_work()
741 spin_unlock(&c->journal.lock); in journal_write_work()
765 ret = &fifo_back(&c->journal.pin); in bch_journal()
773 schedule_delayed_work(&c->journal.work, in bch_journal()
775 spin_unlock(&c->journal.lock); in bch_journal()
777 spin_unlock(&c->journal.lock); in bch_journal()
798 free_pages((unsigned long) c->journal.w[1].data, JSET_BITS); in bch_journal_free()
799 free_pages((unsigned long) c->journal.w[0].data, JSET_BITS); in bch_journal_free()
800 free_fifo(&c->journal.pin); in bch_journal_free()
805 struct journal *j = &c->journal; in bch_journal_alloc()