Lines Matching refs:buf
48 struct journal_buf *buf = j->buf + i; in bch2_journal_buf_to_text() local
53 if (!buf->write_started) in bch2_journal_buf_to_text()
56 struct closure *cl = &buf->io; in bch2_journal_buf_to_text()
60 if (buf->data) { in bch2_journal_buf_to_text()
62 prt_human_readable_u64(out, vstruct_bytes(buf->data)); in bch2_journal_buf_to_text()
66 prt_printf(out, "expires:\t%li jiffies\n", buf->expires - jiffies); in bch2_journal_buf_to_text()
69 if (buf->noflush) in bch2_journal_buf_to_text()
71 if (buf->must_flush) in bch2_journal_buf_to_text()
73 if (buf->separate_flush) in bch2_journal_buf_to_text()
75 if (buf->need_flush_to_write_buffer) in bch2_journal_buf_to_text()
77 if (buf->write_started) in bch2_journal_buf_to_text()
79 if (buf->write_allocated) in bch2_journal_buf_to_text()
81 if (buf->write_done) in bch2_journal_buf_to_text()
108 struct journal_buf *buf = NULL; in journal_seq_to_buf() local
113 buf = j->buf + (seq & JOURNAL_BUF_MASK); in journal_seq_to_buf()
114 return buf; in journal_seq_to_buf()
143 struct printbuf buf = PRINTBUF; in journal_error_check_stuck() local
145 buf.atomic++; in journal_error_check_stuck()
173 __bch2_journal_debug_to_text(&buf, j); in journal_error_check_stuck()
175 prt_printf(&buf, bch2_fmt(c, "Journal stuck! Hava a pre-reservation but journal full (error %s)"), in journal_error_check_stuck()
177 bch2_print_str(c, KERN_ERR, buf.buf); in journal_error_check_stuck()
179 printbuf_reset(&buf); in journal_error_check_stuck()
180 bch2_journal_pins_to_text(&buf, j); in journal_error_check_stuck()
181 bch_err(c, "Journal pins:\n%s", buf.buf); in journal_error_check_stuck()
182 printbuf_exit(&buf); in journal_error_check_stuck()
196 struct journal_buf *w = j->buf + idx; in bch2_journal_do_writes()
242 struct journal_buf *buf = journal_cur_buf(j); in __journal_entry_close() local
269 buf->data->u64s = cpu_to_le32(old.cur_entry_offset); in __journal_entry_close()
276 prt_human_readable_u64(&pbuf, vstruct_bytes(buf->data)); in __journal_entry_close()
279 trace_journal_entry_close(c, pbuf.buf); in __journal_entry_close()
283 sectors = vstruct_blocks_plus(buf->data, c->block_bits, in __journal_entry_close()
284 buf->u64s_reserved) << c->block_bits; in __journal_entry_close()
285 if (unlikely(sectors > buf->sectors)) { in __journal_entry_close()
290 sectors, buf->sectors); in __journal_entry_close()
292 le32_to_cpu(buf->data->u64s), buf->u64s_reserved, in __journal_entry_close()
298 bch_err(c, "%s", err.buf); in __journal_entry_close()
303 buf->sectors = sectors; in __journal_entry_close()
324 buf->last_seq = journal_last_seq(j); in __journal_entry_close()
325 buf->data->last_seq = cpu_to_le64(buf->last_seq); in __journal_entry_close()
326 BUG_ON(buf->last_seq > le64_to_cpu(buf->data->seq)); in __journal_entry_close()
332 __bch2_journal_buf_put(j, le64_to_cpu(buf->data->seq)); in __journal_entry_close()
361 struct journal_buf *buf = journal_cur_buf(j); in journal_entry_want_write() local
363 if (!buf->flush_time) { in journal_entry_want_write()
364 buf->flush_time = local_clock() ?: 1; in journal_entry_want_write()
365 buf->expires = jiffies; in journal_entry_want_write()
390 struct journal_buf *buf = j->buf + in journal_entry_open() local
412 if (nr_unwritten_journal_entries(j) == ARRAY_SIZE(j->buf)) in journal_entry_open()
425 if (!j->free_buf && !buf->data) in journal_entry_open()
430 if (!buf->data) { in journal_entry_open()
431 swap(buf->data, j->free_buf); in journal_entry_open()
432 swap(buf->buf_size, j->free_buf_size); in journal_entry_open()
435 buf->expires = in journal_entry_open()
441 buf->u64s_reserved = j->entry_u64s_reserved; in journal_entry_open()
442 buf->disk_sectors = j->cur_entry_sectors; in journal_entry_open()
443 buf->sectors = min(buf->disk_sectors, buf->buf_size >> 9); in journal_entry_open()
445 u64s = (int) (buf->sectors << 9) / sizeof(u64) - in journal_entry_open()
472 BUG_ON(j->buf + (journal_cur_seq(j) & JOURNAL_BUF_MASK) != buf); in journal_entry_open()
474 bkey_extent_init(&buf->key); in journal_entry_open()
475 buf->noflush = false; in journal_entry_open()
476 buf->must_flush = false; in journal_entry_open()
477 buf->separate_flush = false; in journal_entry_open()
478 buf->flush_time = 0; in journal_entry_open()
479 buf->need_flush_to_write_buffer = true; in journal_entry_open()
480 buf->write_started = false; in journal_entry_open()
481 buf->write_allocated = false; in journal_entry_open()
482 buf->write_done = false; in journal_entry_open()
484 memset(buf->data, 0, sizeof(*buf->data)); in journal_entry_open()
485 buf->data->seq = cpu_to_le64(journal_cur_seq(j)); in journal_entry_open()
486 buf->data->u64s = 0; in journal_entry_open()
489 memcpy(buf->data->_data, j->early_journal_entries.data, in journal_entry_open()
491 le32_add_cpu(&buf->data->u64s, j->early_journal_entries.nr); in journal_entry_open()
512 new.cur_entry_offset = le32_to_cpu(buf->data->u64s); in journal_entry_open()
566 void *buf = kvmalloc(buf_size, GFP_NOFS); in journal_buf_prealloc() local
569 if (buf && in journal_buf_prealloc()
572 swap(buf, j->free_buf); in journal_buf_prealloc()
576 if (unlikely(buf)) { in journal_buf_prealloc()
579 kvfree(buf); in journal_buf_prealloc()
588 struct journal_buf *buf; in __journal_res_get() local
608 if (nr_unwritten_journal_entries(j) == ARRAY_SIZE(j->buf) && !journal_entry_is_open(j)) { in __journal_res_get()
632 buf = journal_cur_buf(j); in __journal_res_get()
634 buf->buf_size >> 9 < buf->disk_sectors && in __journal_res_get()
635 buf->buf_size < JOURNAL_ENTRY_SIZE_MAX) in __journal_res_get()
636 j->buf_size_want = max(j->buf_size_want, buf->buf_size << 1); in __journal_res_get()
655 struct printbuf buf = PRINTBUF; in __journal_res_get() local
657 bch2_printbuf_make_room(&buf, 4096); in __journal_res_get()
660 prt_printf(&buf, "seq %llu\n", journal_cur_seq(j)); in __journal_res_get()
661 bch2_journal_bufs_to_text(&buf, j); in __journal_res_get()
664 trace_journal_entry_full(c, buf.buf); in __journal_res_get()
665 printbuf_exit(&buf); in __journal_res_get()
672 struct printbuf buf = PRINTBUF; in __journal_res_get() local
674 bch2_printbuf_make_room(&buf, 4096); in __journal_res_get()
677 prt_printf(&buf, "seq %llu\n", journal_cur_seq(j)); in __journal_res_get()
678 bch2_journal_bufs_to_text(&buf, j); in __journal_res_get()
681 trace_journal_entry_full(c, buf.buf); in __journal_res_get()
682 printbuf_exit(&buf); in __journal_res_get()
754 struct printbuf buf = PRINTBUF; in bch2_journal_res_get_slowpath() local
755 bch2_journal_debug_to_text(&buf, j); in bch2_journal_res_get_slowpath()
756 bch2_print_str(c, KERN_ERR, buf.buf); in bch2_journal_res_get_slowpath()
757 prt_printf(&buf, bch2_fmt(c, "Journal stuck? Waited for 10 seconds, err %s"), bch2_err_str(ret)); in bch2_journal_res_get_slowpath()
758 printbuf_exit(&buf); in bch2_journal_res_get_slowpath()
816 struct journal_buf *buf; in bch2_journal_flush_seq_async() local
863 buf = journal_seq_to_buf(j, seq); in bch2_journal_flush_seq_async()
864 buf->must_flush = true; in bch2_journal_flush_seq_async()
866 if (!buf->flush_time) { in bch2_journal_flush_seq_async()
867 buf->flush_time = local_clock() ?: 1; in bch2_journal_flush_seq_async()
868 buf->expires = jiffies; in bch2_journal_flush_seq_async()
871 if (parent && !closure_wait(&buf->wait, parent)) in bch2_journal_flush_seq_async()
884 buf = journal_seq_to_buf(j, seq); in bch2_journal_flush_seq_async()
885 if (buf->noflush) { in bch2_journal_flush_seq_async()
890 buf->must_flush = true; in bch2_journal_flush_seq_async()
893 if (parent && !closure_wait(&buf->wait, parent)) in bch2_journal_flush_seq_async()
962 struct journal_buf *buf = journal_seq_to_buf(j, unwritten_seq); in bch2_journal_noflush_seq() local
965 if (buf->must_flush) in bch2_journal_noflush_seq()
968 buf->noflush = true; in bch2_journal_noflush_seq()
984 struct journal_buf *buf = j->buf + (res.seq & JOURNAL_BUF_MASK); in __bch2_journal_meta() local
985 buf->must_flush = true; in __bch2_journal_meta()
987 if (!buf->flush_time) { in __bch2_journal_meta()
988 buf->flush_time = local_clock() ?: 1; in __bch2_journal_meta()
989 buf->expires = jiffies; in __bch2_journal_meta()
1075 struct journal_buf *buf = j->buf + idx; in __bch2_next_write_buffer_flush_journal_buf() local
1077 if (buf->need_flush_to_write_buffer) { in __bch2_next_write_buffer_flush_journal_buf()
1091 : buf; in __bch2_next_write_buffer_flush_journal_buf()
1434 struct journal_buf *buf = journal_seq_to_buf(j, seq); in bch2_journal_writing_to_device() local
1436 if (bch2_bkey_has_device_c(bkey_i_to_s_c(&buf->key), dev_idx)) in bch2_journal_writing_to_device()
1667 for (unsigned i = 0; i < ARRAY_SIZE(j->buf); i++) in bch2_fs_journal_exit()
1668 kvfree(j->buf[i].data); in bch2_fs_journal_exit()
1703 for (unsigned i = 0; i < ARRAY_SIZE(j->buf); i++) in bch2_fs_journal_init()
1704 j->buf[i].idx = i; in bch2_fs_journal_init()