Lines Matching refs:journal

38 	struct journal_device *ja = &ca->journal;  in journal_read_bucket()
42 struct jset *j, *data = ca->set->journal.w[0].data; in journal_read_bucket()
161 struct journal_device *ja = &ca->journal; in bch_journal_read()
266 c->journal.seq = list_entry(list->prev, in bch_journal_read()
279 struct journal *j = &c->journal; in bch_journal_mark()
374 (fifo_idx(&c->journal.pin, btree_current_write(l)->journal) < \
375 fifo_idx(&(c)->journal.pin, btree_current_write(r)->journal))
377 (fifo_idx(&c->journal.pin, btree_current_write(l)->journal) > \
378 fifo_idx(&(c)->journal.pin, btree_current_write(r)->journal))
392 spin_lock(&c->journal.lock); in btree_flush_write()
395 if (btree_current_write(b)->journal) { in btree_flush_write()
413 spin_unlock(&c->journal.lock); in btree_flush_write()
417 if (!btree_current_write(b)->journal) { in btree_flush_write()
435 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio()
439 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
453 struct journal_device *ja = &ca->journal; in do_journal_discard()
494 struct bkey *k = &c->journal.key; in journal_reclaim()
502 while (!atomic_read(&fifo_front(&c->journal.pin))) in journal_reclaim()
503 fifo_pop(&c->journal.pin, p); in journal_reclaim()
505 last_seq = last_seq(&c->journal); in journal_reclaim()
510 struct journal_device *ja = &ca->journal; in journal_reclaim()
521 if (c->journal.blocks_free) in journal_reclaim()
530 struct journal_device *ja = &ca->journal; in journal_reclaim()
547 c->journal.blocks_free = c->sb.bucket_size >> c->block_bits; in journal_reclaim()
549 if (!journal_full(&c->journal)) in journal_reclaim()
550 __closure_wake_up(&c->journal.wait); in journal_reclaim()
553 void bch_journal_next(struct journal *j) in bch_journal_next()
582 closure_put(&w->c->journal.io); in journal_write_endio()
589 struct journal *j = container_of(cl, struct journal, io); in journal_write_done()
599 __releases(&c->journal.lock) in journal_write_unlock()
601 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlock()
603 c->journal.io_in_flight = 0; in journal_write_unlock()
604 spin_unlock(&c->journal.lock); in journal_write_unlock()
608 __releases(c->journal.lock) in journal_write_unlocked()
610 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlocked()
612 struct journal_write *w = c->journal.cur; in journal_write_unlocked()
613 struct bkey *k = &c->journal.key; in journal_write_unlocked()
625 } else if (journal_full(&c->journal)) { in journal_write_unlocked()
627 spin_unlock(&c->journal.lock); in journal_write_unlocked()
634 c->journal.blocks_free -= set_blocks(w->data, block_bytes(c)); in journal_write_unlocked()
646 w->data->last_seq = last_seq(&c->journal); in journal_write_unlocked()
651 bio = &ca->journal.bio; in journal_write_unlocked()
671 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()
674 atomic_dec_bug(&fifo_back(&c->journal.pin)); in journal_write_unlocked()
675 bch_journal_next(&c->journal); in journal_write_unlocked()
678 spin_unlock(&c->journal.lock); in journal_write_unlocked()
688 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write()
690 spin_lock(&c->journal.lock); in journal_write()
695 __releases(c->journal.lock) in journal_try_write()
697 struct closure *cl = &c->journal.io; in journal_try_write()
698 struct journal_write *w = c->journal.cur; in journal_try_write()
702 if (!c->journal.io_in_flight) { in journal_try_write()
703 c->journal.io_in_flight = 1; in journal_try_write()
706 spin_unlock(&c->journal.lock); in journal_try_write()
712 __acquires(&c->journal.lock) in journal_wait_for_write()
720 spin_lock(&c->journal.lock); in journal_wait_for_write()
723 struct journal_write *w = c->journal.cur; in journal_wait_for_write()
729 c->journal.blocks_free * c->sb.block_size, in journal_wait_for_write()
734 closure_wait(&c->journal.wait, &cl); in journal_wait_for_write()
736 if (!journal_full(&c->journal)) { in journal_wait_for_write()
754 spin_unlock(&c->journal.lock); in journal_wait_for_write()
760 spin_lock(&c->journal.lock); in journal_wait_for_write()
769 journal.work); in journal_write_work()
770 spin_lock(&c->journal.lock); in journal_write_work()
771 if (c->journal.cur->dirty) in journal_write_work()
774 spin_unlock(&c->journal.lock); in journal_write_work()
798 ret = &fifo_back(&c->journal.pin); in bch_journal()
806 schedule_delayed_work(&c->journal.work, in bch_journal()
808 spin_unlock(&c->journal.lock); in bch_journal()
810 spin_unlock(&c->journal.lock); in bch_journal()
831 free_pages((unsigned long) c->journal.w[1].data, JSET_BITS); in bch_journal_free()
832 free_pages((unsigned long) c->journal.w[0].data, JSET_BITS); in bch_journal_free()
833 free_fifo(&c->journal.pin); in bch_journal_free()
839 struct journal *j = &c->journal; in bch_journal_alloc()