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()
184 struct journal_device *ja = &ca->journal; in bch_journal_read()
286 c->journal.seq = list_entry(list->prev, in bch_journal_read()
299 struct journal *j = &c->journal; in bch_journal_mark()
420 if (c->journal.btree_flushing) in btree_flush_write()
423 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
424 if (c->journal.btree_flushing) { in btree_flush_write()
425 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
428 c->journal.btree_flushing = true; in btree_flush_write()
429 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
432 spin_lock(&c->journal.lock); in btree_flush_write()
433 fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
440 spin_unlock(&c->journal.lock); in btree_flush_write()
443 spin_unlock(&c->journal.lock); in btree_flush_write()
445 mask = c->journal.pin.mask; in btree_flush_write()
458 now_fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
485 if (!btree_current_write(b)->journal) { in btree_flush_write()
503 if (((btree_current_write(b)->journal - fifo_front_p) & in btree_flush_write()
540 if (!btree_current_write(b)->journal) { in btree_flush_write()
560 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
561 c->journal.btree_flushing = false; in btree_flush_write()
562 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
571 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio()
575 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
589 struct journal_device *ja = &ca->journal; in do_journal_discard()
630 struct bkey *k = &c->journal.key; in journal_reclaim()
634 struct journal_device *ja = &ca->journal; in journal_reclaim()
639 while (!atomic_read(&fifo_front(&c->journal.pin))) in journal_reclaim()
640 fifo_pop(&c->journal.pin, p); in journal_reclaim()
642 last_seq = last_seq(&c->journal); in journal_reclaim()
653 if (c->journal.blocks_free) in journal_reclaim()
669 c->journal.blocks_free = ca->sb.bucket_size >> c->block_bits; in journal_reclaim()
672 if (!journal_full(&c->journal)) in journal_reclaim()
673 __closure_wake_up(&c->journal.wait); in journal_reclaim()
676 void bch_journal_next(struct journal *j) in bch_journal_next()
705 closure_put(&w->c->journal.io); in journal_write_endio()
712 struct journal *j = container_of(cl, struct journal, io); in journal_write_done()
722 __releases(&c->journal.lock) in journal_write_unlock()
724 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlock()
726 c->journal.io_in_flight = 0; in journal_write_unlock()
727 spin_unlock(&c->journal.lock); in journal_write_unlock()
731 __releases(c->journal.lock) in journal_write_unlocked()
733 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlocked()
735 struct journal_write *w = c->journal.cur; in journal_write_unlocked()
736 struct bkey *k = &c->journal.key; in journal_write_unlocked()
748 } else if (journal_full(&c->journal)) { in journal_write_unlocked()
750 spin_unlock(&c->journal.lock); in journal_write_unlocked()
757 c->journal.blocks_free -= set_blocks(w->data, block_bytes(ca)); in journal_write_unlocked()
767 w->data->last_seq = last_seq(&c->journal); in journal_write_unlocked()
772 bio = &ca->journal.bio; in journal_write_unlocked()
792 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()
798 atomic_dec_bug(&fifo_back(&c->journal.pin)); in journal_write_unlocked()
799 bch_journal_next(&c->journal); in journal_write_unlocked()
802 spin_unlock(&c->journal.lock); in journal_write_unlocked()
812 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write()
814 spin_lock(&c->journal.lock); in journal_write()
819 __releases(c->journal.lock) in journal_try_write()
821 struct closure *cl = &c->journal.io; in journal_try_write()
822 struct journal_write *w = c->journal.cur; in journal_try_write()
826 if (!c->journal.io_in_flight) { in journal_try_write()
827 c->journal.io_in_flight = 1; in journal_try_write()
830 spin_unlock(&c->journal.lock); in journal_try_write()
836 __acquires(&c->journal.lock) in journal_wait_for_write()
845 spin_lock(&c->journal.lock); in journal_wait_for_write()
848 struct journal_write *w = c->journal.cur; in journal_wait_for_write()
854 c->journal.blocks_free * ca->sb.block_size, in journal_wait_for_write()
859 closure_wait(&c->journal.wait, &cl); in journal_wait_for_write()
861 if (!journal_full(&c->journal)) { in journal_wait_for_write()
879 spin_unlock(&c->journal.lock); in journal_wait_for_write()
885 spin_lock(&c->journal.lock); in journal_wait_for_write()
894 journal.work); in journal_write_work()
895 spin_lock(&c->journal.lock); in journal_write_work()
896 if (c->journal.cur->dirty) in journal_write_work()
899 spin_unlock(&c->journal.lock); in journal_write_work()
927 ret = &fifo_back(&c->journal.pin); in bch_journal()
935 schedule_delayed_work(&c->journal.work, in bch_journal()
937 spin_unlock(&c->journal.lock); in bch_journal()
939 spin_unlock(&c->journal.lock); in bch_journal()
960 free_pages((unsigned long) c->journal.w[1].data, JSET_BITS); in bch_journal_free()
961 free_pages((unsigned long) c->journal.w[0].data, JSET_BITS); in bch_journal_free()
962 free_fifo(&c->journal.pin); in bch_journal_free()
967 struct journal *j = &c->journal; in bch_journal_alloc()