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()
410 void bch_journal_space_reserve(struct journal *j) in bch_journal_space_reserve()
425 if (c->journal.btree_flushing) in btree_flush_write()
428 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
429 if (c->journal.btree_flushing) { in btree_flush_write()
430 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
433 c->journal.btree_flushing = true; in btree_flush_write()
434 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
437 spin_lock(&c->journal.lock); in btree_flush_write()
438 fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
445 spin_unlock(&c->journal.lock); in btree_flush_write()
448 spin_unlock(&c->journal.lock); in btree_flush_write()
450 mask = c->journal.pin.mask; in btree_flush_write()
463 now_fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
490 if (!btree_current_write(b)->journal) { in btree_flush_write()
508 if (((btree_current_write(b)->journal - fifo_front_p) & in btree_flush_write()
545 if (!btree_current_write(b)->journal) { in btree_flush_write()
565 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
566 c->journal.btree_flushing = false; in btree_flush_write()
567 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
576 struct cache *ca = container_of(ja, struct cache, journal); in journal_discard_endio()
580 closure_wake_up(&ca->set->journal.wait); in journal_discard_endio()
594 struct journal_device *ja = &ca->journal; in do_journal_discard()
635 struct journal *j = &c->journal; in free_journal_buckets()
637 struct journal_device *ja = &c->cache->journal; in free_journal_buckets()
654 struct bkey *k = &c->journal.key; in journal_reclaim()
657 struct journal_device *ja = &ca->journal; in journal_reclaim()
662 while (!atomic_read(&fifo_front(&c->journal.pin))) in journal_reclaim()
663 fifo_pop(&c->journal.pin, p); in journal_reclaim()
665 last_seq = last_seq(&c->journal); in journal_reclaim()
676 if (c->journal.blocks_free) in journal_reclaim()
690 c->journal.blocks_free = ca->sb.bucket_size >> c->block_bits; in journal_reclaim()
693 if (!journal_full(&c->journal)) in journal_reclaim()
694 __closure_wake_up(&c->journal.wait); in journal_reclaim()
697 void bch_journal_next(struct journal *j) in bch_journal_next()
726 closure_put(&w->c->journal.io); in journal_write_endio()
733 struct journal *j = container_of(cl, struct journal, io); in journal_write_done()
743 __releases(&c->journal.lock) in journal_write_unlock()
745 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlock()
747 c->journal.io_in_flight = 0; in journal_write_unlock()
748 spin_unlock(&c->journal.lock); in journal_write_unlock()
752 __releases(c->journal.lock) in journal_write_unlocked()
754 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write_unlocked()
756 struct journal_write *w = c->journal.cur; in journal_write_unlocked()
757 struct bkey *k = &c->journal.key; in journal_write_unlocked()
769 } else if (journal_full(&c->journal)) { in journal_write_unlocked()
771 spin_unlock(&c->journal.lock); in journal_write_unlocked()
778 c->journal.blocks_free -= set_blocks(w->data, block_bytes(ca)); in journal_write_unlocked()
788 w->data->last_seq = last_seq(&c->journal); in journal_write_unlocked()
793 bio = &ca->journal.bio; in journal_write_unlocked()
813 ca->journal.seq[ca->journal.cur_idx] = w->data->seq; in journal_write_unlocked()
819 atomic_dec_bug(&fifo_back(&c->journal.pin)); in journal_write_unlocked()
820 bch_journal_next(&c->journal); in journal_write_unlocked()
823 spin_unlock(&c->journal.lock); in journal_write_unlocked()
833 struct cache_set *c = container_of(cl, struct cache_set, journal.io); in journal_write()
835 spin_lock(&c->journal.lock); in journal_write()
840 __releases(c->journal.lock) in journal_try_write()
842 struct closure *cl = &c->journal.io; in journal_try_write()
843 struct journal_write *w = c->journal.cur; in journal_try_write()
847 if (!c->journal.io_in_flight) { in journal_try_write()
848 c->journal.io_in_flight = 1; in journal_try_write()
851 spin_unlock(&c->journal.lock); in journal_try_write()
857 __acquires(&c->journal.lock) in journal_wait_for_write()
866 spin_lock(&c->journal.lock); in journal_wait_for_write()
869 struct journal_write *w = c->journal.cur; in journal_wait_for_write()
875 c->journal.blocks_free * ca->sb.block_size, in journal_wait_for_write()
880 closure_wait(&c->journal.wait, &cl); in journal_wait_for_write()
882 if (!journal_full(&c->journal)) { in journal_wait_for_write()
900 spin_unlock(&c->journal.lock); in journal_wait_for_write()
906 spin_lock(&c->journal.lock); in journal_wait_for_write()
915 journal.work); in journal_write_work()
916 spin_lock(&c->journal.lock); in journal_write_work()
917 if (c->journal.cur->dirty) in journal_write_work()
920 spin_unlock(&c->journal.lock); in journal_write_work()
948 ret = &fifo_back(&c->journal.pin); in bch_journal()
956 queue_delayed_work(bch_flush_wq, &c->journal.work, in bch_journal()
958 spin_unlock(&c->journal.lock); in bch_journal()
960 spin_unlock(&c->journal.lock); in bch_journal()
981 free_pages((unsigned long) c->journal.w[1].data, JSET_BITS); in bch_journal_free()
982 free_pages((unsigned long) c->journal.w[0].data, JSET_BITS); in bch_journal_free()
983 free_fifo(&c->journal.pin); in bch_journal_free()
988 struct journal *j = &c->journal; in bch_journal_alloc()