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()
183 struct journal_device *ja = &ca->journal; in bch_journal_read()
284 c->journal.seq = list_entry(list->prev, in bch_journal_read()
297 struct journal *j = &c->journal; in bch_journal_mark()
393 void bch_journal_space_reserve(struct journal *j) in bch_journal_space_reserve()
408 if (c->journal.btree_flushing) in btree_flush_write()
411 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
412 if (c->journal.btree_flushing) { in btree_flush_write()
413 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
416 c->journal.btree_flushing = true; in btree_flush_write()
417 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
420 spin_lock(&c->journal.lock); in btree_flush_write()
421 fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
428 spin_unlock(&c->journal.lock); in btree_flush_write()
431 spin_unlock(&c->journal.lock); in btree_flush_write()
433 mask = c->journal.pin.mask; in btree_flush_write()
446 now_fifo_front_p = &fifo_front(&c->journal.pin); in btree_flush_write()
473 if (!btree_current_write(b)->journal) { in btree_flush_write()
491 if (((btree_current_write(b)->journal - fifo_front_p) & in btree_flush_write()
528 if (!btree_current_write(b)->journal) { in btree_flush_write()
548 spin_lock(&c->journal.flush_write_lock); in btree_flush_write()
549 c->journal.btree_flushing = false; in btree_flush_write()
550 spin_unlock(&c->journal.flush_write_lock); in btree_flush_write()
557 struct journal *j = &c->journal; in free_journal_buckets()
559 struct journal_device *ja = &c->cache->journal; in free_journal_buckets()
576 struct bkey *k = &c->journal.key; in journal_reclaim()
579 struct journal_device *ja = &ca->journal; in journal_reclaim()
584 while (!atomic_read(&fifo_front(&c->journal.pin))) in journal_reclaim()
585 fifo_pop(&c->journal.pin, p); in journal_reclaim()
587 last_seq = last_seq(&c->journal); in journal_reclaim()
596 if (c->journal.blocks_free) in journal_reclaim()
610 c->journal.blocks_free = ca->sb.bucket_size >> c->block_bits; in journal_reclaim()
613 if (!journal_full(&c->journal)) in journal_reclaim()
614 __closure_wake_up(&c->journal.wait); in journal_reclaim()
617 void bch_journal_next(struct journal *j) in bch_journal_next()
646 closure_put(&w->c->journal.io); in journal_write_endio()
653 closure_type(j, struct journal, io); in CLOSURE_CALLBACK()
663 __releases(&c->journal.lock)
665 closure_type(c, struct cache_set, journal.io);
667 c->journal.io_in_flight = 0;
668 spin_unlock(&c->journal.lock);
672 __releases(c->journal.lock)
674 closure_type(c, struct cache_set, journal.io);
676 struct journal_write *w = c->journal.cur;
677 struct bkey *k = &c->journal.key;
689 } else if (journal_full(&c->journal)) {
691 spin_unlock(&c->journal.lock);
698 c->journal.blocks_free -= set_blocks(w->data, block_bytes(ca));
708 w->data->last_seq = last_seq(&c->journal);
713 bio = &ca->journal.bio;
731 ca->journal.seq[ca->journal.cur_idx] = w->data->seq;
737 atomic_dec_bug(&fifo_back(&c->journal.pin));
738 bch_journal_next(&c->journal);
741 spin_unlock(&c->journal.lock);
751 closure_type(c, struct cache_set, journal.io); in CLOSURE_CALLBACK()
753 spin_lock(&c->journal.lock); in CLOSURE_CALLBACK()
758 __releases(c->journal.lock) in journal_try_write()
760 struct closure *cl = &c->journal.io; in journal_try_write()
761 struct journal_write *w = c->journal.cur; in journal_try_write()
765 if (!c->journal.io_in_flight) { in journal_try_write()
766 c->journal.io_in_flight = 1; in journal_try_write()
769 spin_unlock(&c->journal.lock); in journal_try_write()
775 __acquires(&c->journal.lock) in journal_wait_for_write()
784 spin_lock(&c->journal.lock); in journal_wait_for_write()
787 struct journal_write *w = c->journal.cur; in journal_wait_for_write()
793 c->journal.blocks_free * ca->sb.block_size, in journal_wait_for_write()
798 closure_wait(&c->journal.wait, &cl); in journal_wait_for_write()
800 if (!journal_full(&c->journal)) { in journal_wait_for_write()
818 spin_unlock(&c->journal.lock); in journal_wait_for_write()
824 spin_lock(&c->journal.lock); in journal_wait_for_write()
833 journal.work); in journal_write_work()
834 spin_lock(&c->journal.lock); in journal_write_work()
835 if (c->journal.cur->dirty) in journal_write_work()
838 spin_unlock(&c->journal.lock); in journal_write_work()
866 ret = &fifo_back(&c->journal.pin); in bch_journal()
874 queue_delayed_work(bch_flush_wq, &c->journal.work, in bch_journal()
876 spin_unlock(&c->journal.lock); in bch_journal()
878 spin_unlock(&c->journal.lock); in bch_journal()
899 free_pages((unsigned long) c->journal.w[1].data, JSET_BITS); in bch_journal_free()
900 free_pages((unsigned long) c->journal.w[0].data, JSET_BITS); in bch_journal_free()
901 free_fifo(&c->journal.pin); in bch_journal_free()
906 struct journal *j = &c->journal; in bch_journal_alloc()