Lines Matching refs:handle
257 static int start_this_handle(journal_t *journal, handle_t *handle, in start_this_handle() argument
261 int blocks = handle->h_buffer_credits; in start_this_handle()
276 if (handle->h_rsv_handle) in start_this_handle()
277 rsv_blocks = handle->h_rsv_handle->h_buffer_credits; in start_this_handle()
299 jbd_debug(3, "New handle %p going live.\n", handle); in start_this_handle()
320 if (!handle->h_reserved && journal->j_barrier_count) { in start_this_handle()
333 (handle->h_reserved || !journal->j_barrier_count)) { in start_this_handle()
343 if (!handle->h_reserved) { in start_this_handle()
354 handle->h_reserved = 0; in start_this_handle()
361 handle->h_transaction = transaction; in start_this_handle()
362 handle->h_requested_credits = blocks; in start_this_handle()
363 handle->h_start_jiffies = jiffies; in start_this_handle()
367 handle, blocks, in start_this_handle()
371 current->journal_info = handle; in start_this_handle()
373 lock_map_acquire(&handle->h_lockdep_map); in start_this_handle()
383 handle_t *handle = jbd2_alloc_handle(GFP_NOFS); in new_handle() local
384 if (!handle) in new_handle()
386 handle->h_buffer_credits = nblocks; in new_handle()
387 handle->h_ref = 1; in new_handle()
389 lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", in new_handle()
392 return handle; in new_handle()
418 handle_t *handle = journal_current_handle(); in jbd2__journal_start() local
424 if (handle) { in jbd2__journal_start()
425 J_ASSERT(handle->h_transaction->t_journal == journal); in jbd2__journal_start()
426 handle->h_ref++; in jbd2__journal_start()
427 return handle; in jbd2__journal_start()
430 handle = new_handle(nblocks); in jbd2__journal_start()
431 if (!handle) in jbd2__journal_start()
438 jbd2_free_handle(handle); in jbd2__journal_start()
443 handle->h_rsv_handle = rsv_handle; in jbd2__journal_start()
446 err = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_start()
448 if (handle->h_rsv_handle) in jbd2__journal_start()
449 jbd2_free_handle(handle->h_rsv_handle); in jbd2__journal_start()
450 jbd2_free_handle(handle); in jbd2__journal_start()
453 handle->h_type = type; in jbd2__journal_start()
454 handle->h_line_no = line_no; in jbd2__journal_start()
456 handle->h_transaction->t_tid, type, in jbd2__journal_start()
458 return handle; in jbd2__journal_start()
469 void jbd2_journal_free_reserved(handle_t *handle) in jbd2_journal_free_reserved() argument
471 journal_t *journal = handle->h_journal; in jbd2_journal_free_reserved()
473 WARN_ON(!handle->h_reserved); in jbd2_journal_free_reserved()
474 sub_reserved_credits(journal, handle->h_buffer_credits); in jbd2_journal_free_reserved()
475 jbd2_free_handle(handle); in jbd2_journal_free_reserved()
491 int jbd2_journal_start_reserved(handle_t *handle, unsigned int type, in jbd2_journal_start_reserved() argument
494 journal_t *journal = handle->h_journal; in jbd2_journal_start_reserved()
497 if (WARN_ON(!handle->h_reserved)) { in jbd2_journal_start_reserved()
499 jbd2_journal_stop(handle); in jbd2_journal_start_reserved()
507 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
511 handle->h_journal = NULL; in jbd2_journal_start_reserved()
516 ret = start_this_handle(journal, handle, GFP_NOFS); in jbd2_journal_start_reserved()
518 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
521 handle->h_type = type; in jbd2_journal_start_reserved()
522 handle->h_line_no = line_no; in jbd2_journal_start_reserved()
547 int jbd2_journal_extend(handle_t *handle, int nblocks) in jbd2_journal_extend() argument
549 transaction_t *transaction = handle->h_transaction; in jbd2_journal_extend()
555 if (is_handle_aborted(handle)) in jbd2_journal_extend()
566 "transaction not running\n", handle, nblocks); in jbd2_journal_extend()
576 "transaction too large\n", handle, nblocks); in jbd2_journal_extend()
584 "insufficient log space\n", handle, nblocks); in jbd2_journal_extend()
591 handle->h_type, handle->h_line_no, in jbd2_journal_extend()
592 handle->h_buffer_credits, in jbd2_journal_extend()
595 handle->h_buffer_credits += nblocks; in jbd2_journal_extend()
596 handle->h_requested_credits += nblocks; in jbd2_journal_extend()
599 jbd_debug(3, "extended handle %p by %d\n", handle, nblocks); in jbd2_journal_extend()
623 int jbd2__journal_restart(handle_t *handle, int nblocks, gfp_t gfp_mask) in jbd2__journal_restart() argument
625 transaction_t *transaction = handle->h_transaction; in jbd2__journal_restart()
633 if (is_handle_aborted(handle)) in jbd2__journal_restart()
642 J_ASSERT(journal_current_handle() == handle); in jbd2__journal_restart()
646 atomic_sub(handle->h_buffer_credits, in jbd2__journal_restart()
648 if (handle->h_rsv_handle) { in jbd2__journal_restart()
650 handle->h_rsv_handle->h_buffer_credits); in jbd2__journal_restart()
656 handle->h_transaction = NULL; in jbd2__journal_restart()
659 jbd_debug(2, "restarting handle %p\n", handle); in jbd2__journal_restart()
665 lock_map_release(&handle->h_lockdep_map); in jbd2__journal_restart()
666 handle->h_buffer_credits = nblocks; in jbd2__journal_restart()
667 ret = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_restart()
673 int jbd2_journal_restart(handle_t *handle, int nblocks) in jbd2_journal_restart() argument
675 return jbd2__journal_restart(handle, nblocks, GFP_NOFS); in jbd2_journal_restart()
777 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
781 transaction_t *transaction = handle->h_transaction; in do_get_write_access()
789 if (is_handle_aborted(handle)) in do_get_write_access()
852 if (is_handle_aborted(handle)) { in do_get_write_access()
992 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1013 int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_write_access() argument
1021 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1046 int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_create_access() argument
1048 transaction_t *transaction = handle->h_transaction; in jbd2_journal_get_create_access()
1056 if (is_handle_aborted(handle)) in jbd2_journal_get_create_access()
1113 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1145 int jbd2_journal_get_undo_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_undo_access() argument
1158 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1262 int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) in jbd2_journal_dirty_metadata() argument
1264 transaction_t *transaction = handle->h_transaction; in jbd2_journal_dirty_metadata()
1270 if (is_handle_aborted(handle)) in jbd2_journal_dirty_metadata()
1290 if (handle->h_buffer_credits <= 0) { in jbd2_journal_dirty_metadata()
1294 handle->h_buffer_credits--; in jbd2_journal_dirty_metadata()
1391 int jbd2_journal_forget (handle_t *handle, struct buffer_head *bh) in jbd2_journal_forget() argument
1393 transaction_t *transaction = handle->h_transaction; in jbd2_journal_forget()
1401 if (is_handle_aborted(handle)) in jbd2_journal_forget()
1504 handle->h_buffer_credits++; in jbd2_journal_forget()
1525 int jbd2_journal_stop(handle_t *handle) in jbd2_journal_stop() argument
1527 transaction_t *transaction = handle->h_transaction; in jbd2_journal_stop()
1537 J_ASSERT(journal_current_handle() == handle); in jbd2_journal_stop()
1539 if (is_handle_aborted(handle)) in jbd2_journal_stop()
1544 if (--handle->h_ref > 0) { in jbd2_journal_stop()
1545 jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1, in jbd2_journal_stop()
1546 handle->h_ref); in jbd2_journal_stop()
1550 jbd_debug(4, "Handle %p going down\n", handle); in jbd2_journal_stop()
1553 handle->h_type, handle->h_line_no, in jbd2_journal_stop()
1554 jiffies - handle->h_start_jiffies, in jbd2_journal_stop()
1555 handle->h_sync, handle->h_requested_credits, in jbd2_journal_stop()
1556 (handle->h_requested_credits - in jbd2_journal_stop()
1557 handle->h_buffer_credits)); in jbd2_journal_stop()
1589 if (handle->h_sync && journal->j_last_sync_writer != pid && in jbd2_journal_stop()
1615 if (handle->h_sync) in jbd2_journal_stop()
1618 atomic_sub(handle->h_buffer_credits, in jbd2_journal_stop()
1627 if (handle->h_sync || in jbd2_journal_stop()
1636 "handle %p\n", handle); in jbd2_journal_stop()
1644 if (handle->h_sync && !(current->flags & PF_MEMALLOC)) in jbd2_journal_stop()
1664 lock_map_release(&handle->h_lockdep_map); in jbd2_journal_stop()
1666 if (handle->h_rsv_handle) in jbd2_journal_stop()
1667 jbd2_journal_free_reserved(handle->h_rsv_handle); in jbd2_journal_stop()
1669 jbd2_free_handle(handle); in jbd2_journal_stop()
2371 int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *jinode) in jbd2_journal_file_inode() argument
2373 transaction_t *transaction = handle->h_transaction; in jbd2_journal_file_inode()
2377 if (is_handle_aborted(handle)) in jbd2_journal_file_inode()