• Home
  • Raw
  • Download

Lines Matching refs:handle

298 static int start_this_handle(journal_t *journal, handle_t *handle,  in start_this_handle()  argument
302 int blocks = handle->h_buffer_credits; in start_this_handle()
306 if (handle->h_rsv_handle) in start_this_handle()
307 rsv_blocks = handle->h_rsv_handle->h_buffer_credits; in start_this_handle()
338 jbd_debug(3, "New handle %p going live.\n", handle); in start_this_handle()
359 if (!handle->h_reserved && journal->j_barrier_count) { in start_this_handle()
372 (handle->h_reserved || !journal->j_barrier_count)) { in start_this_handle()
382 if (!handle->h_reserved) { in start_this_handle()
399 handle->h_reserved = 0; in start_this_handle()
406 handle->h_transaction = transaction; in start_this_handle()
407 handle->h_requested_credits = blocks; in start_this_handle()
408 handle->h_start_jiffies = jiffies; in start_this_handle()
412 handle, blocks, in start_this_handle()
416 current->journal_info = handle; in start_this_handle()
424 handle->saved_alloc_context = memalloc_nofs_save(); in start_this_handle()
431 handle_t *handle = jbd2_alloc_handle(GFP_NOFS); in new_handle() local
432 if (!handle) in new_handle()
434 handle->h_buffer_credits = nblocks; in new_handle()
435 handle->h_ref = 1; in new_handle()
437 return handle; in new_handle()
444 handle_t *handle = journal_current_handle(); in jbd2__journal_start() local
450 if (handle) { in jbd2__journal_start()
451 J_ASSERT(handle->h_transaction->t_journal == journal); in jbd2__journal_start()
452 handle->h_ref++; in jbd2__journal_start()
453 return handle; in jbd2__journal_start()
456 handle = new_handle(nblocks); in jbd2__journal_start()
457 if (!handle) in jbd2__journal_start()
464 jbd2_free_handle(handle); in jbd2__journal_start()
469 handle->h_rsv_handle = rsv_handle; in jbd2__journal_start()
472 err = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_start()
474 if (handle->h_rsv_handle) in jbd2__journal_start()
475 jbd2_free_handle(handle->h_rsv_handle); in jbd2__journal_start()
476 jbd2_free_handle(handle); in jbd2__journal_start()
479 handle->h_type = type; in jbd2__journal_start()
480 handle->h_line_no = line_no; in jbd2__journal_start()
482 handle->h_transaction->t_tid, type, in jbd2__journal_start()
485 return handle; in jbd2__journal_start()
515 void jbd2_journal_free_reserved(handle_t *handle) in jbd2_journal_free_reserved() argument
517 journal_t *journal = handle->h_journal; in jbd2_journal_free_reserved()
519 WARN_ON(!handle->h_reserved); in jbd2_journal_free_reserved()
520 sub_reserved_credits(journal, handle->h_buffer_credits); in jbd2_journal_free_reserved()
521 jbd2_free_handle(handle); in jbd2_journal_free_reserved()
539 int jbd2_journal_start_reserved(handle_t *handle, unsigned int type, in jbd2_journal_start_reserved() argument
542 journal_t *journal = handle->h_journal; in jbd2_journal_start_reserved()
545 if (WARN_ON(!handle->h_reserved)) { in jbd2_journal_start_reserved()
547 jbd2_journal_stop(handle); in jbd2_journal_start_reserved()
555 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
559 handle->h_journal = NULL; in jbd2_journal_start_reserved()
564 ret = start_this_handle(journal, handle, GFP_NOFS); in jbd2_journal_start_reserved()
566 handle->h_journal = journal; in jbd2_journal_start_reserved()
567 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
570 handle->h_type = type; in jbd2_journal_start_reserved()
571 handle->h_line_no = line_no; in jbd2_journal_start_reserved()
573 handle->h_transaction->t_tid, type, in jbd2_journal_start_reserved()
574 line_no, handle->h_buffer_credits); in jbd2_journal_start_reserved()
599 int jbd2_journal_extend(handle_t *handle, int nblocks) in jbd2_journal_extend() argument
601 transaction_t *transaction = handle->h_transaction; in jbd2_journal_extend()
606 if (is_handle_aborted(handle)) in jbd2_journal_extend()
617 "transaction not running\n", handle, nblocks); in jbd2_journal_extend()
627 "transaction too large\n", handle, nblocks); in jbd2_journal_extend()
635 "insufficient log space\n", handle, nblocks); in jbd2_journal_extend()
642 handle->h_type, handle->h_line_no, in jbd2_journal_extend()
643 handle->h_buffer_credits, in jbd2_journal_extend()
646 handle->h_buffer_credits += nblocks; in jbd2_journal_extend()
647 handle->h_requested_credits += nblocks; in jbd2_journal_extend()
650 jbd_debug(3, "extended handle %p by %d\n", handle, nblocks); in jbd2_journal_extend()
675 int jbd2__journal_restart(handle_t *handle, int nblocks, gfp_t gfp_mask) in jbd2__journal_restart() argument
677 transaction_t *transaction = handle->h_transaction; in jbd2__journal_restart()
684 if (is_handle_aborted(handle)) in jbd2__journal_restart()
693 J_ASSERT(journal_current_handle() == handle); in jbd2__journal_restart()
697 atomic_sub(handle->h_buffer_credits, in jbd2__journal_restart()
699 if (handle->h_rsv_handle) { in jbd2__journal_restart()
701 handle->h_rsv_handle->h_buffer_credits); in jbd2__journal_restart()
707 handle->h_transaction = NULL; in jbd2__journal_restart()
710 jbd_debug(2, "restarting handle %p\n", handle); in jbd2__journal_restart()
717 handle->h_buffer_credits = nblocks; in jbd2__journal_restart()
723 memalloc_nofs_restore(handle->saved_alloc_context); in jbd2__journal_restart()
724 ret = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_restart()
730 int jbd2_journal_restart(handle_t *handle, int nblocks) in jbd2_journal_restart() argument
732 return jbd2__journal_restart(handle, nblocks, GFP_NOFS); in jbd2_journal_restart()
858 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
862 transaction_t *transaction = handle->h_transaction; in do_get_write_access()
868 if (is_handle_aborted(handle)) in do_get_write_access()
931 if (is_handle_aborted(handle)) { in do_get_write_access()
1042 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1053 static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh, in jbd2_write_access_granted() argument
1084 if (jh->b_transaction != handle->h_transaction && in jbd2_write_access_granted()
1085 jh->b_next_transaction != handle->h_transaction) in jbd2_write_access_granted()
1116 int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_write_access() argument
1121 if (jbd2_write_access_granted(handle, bh, false)) in jbd2_journal_get_write_access()
1128 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1153 int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_create_access() argument
1155 transaction_t *transaction = handle->h_transaction; in jbd2_journal_get_create_access()
1162 if (is_handle_aborted(handle)) in jbd2_journal_get_create_access()
1220 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1252 int jbd2_journal_get_undo_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_undo_access() argument
1258 if (jbd2_write_access_granted(handle, bh, true)) in jbd2_journal_get_undo_access()
1269 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1365 int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) in jbd2_journal_dirty_metadata() argument
1367 transaction_t *transaction = handle->h_transaction; in jbd2_journal_dirty_metadata()
1372 if (is_handle_aborted(handle)) in jbd2_journal_dirty_metadata()
1407 handle->h_type, handle->h_line_no, in jbd2_journal_dirty_metadata()
1426 if (handle->h_buffer_credits <= 0) { in jbd2_journal_dirty_metadata()
1431 handle->h_buffer_credits--; in jbd2_journal_dirty_metadata()
1527 int jbd2_journal_forget (handle_t *handle, struct buffer_head *bh) in jbd2_journal_forget() argument
1529 transaction_t *transaction = handle->h_transaction; in jbd2_journal_forget()
1536 if (is_handle_aborted(handle)) in jbd2_journal_forget()
1675 handle->h_buffer_credits++; in jbd2_journal_forget()
1701 int jbd2_journal_stop(handle_t *handle) in jbd2_journal_stop() argument
1703 transaction_t *transaction = handle->h_transaction; in jbd2_journal_stop()
1715 if (--handle->h_ref > 0) { in jbd2_journal_stop()
1716 jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1, in jbd2_journal_stop()
1717 handle->h_ref); in jbd2_journal_stop()
1720 if (handle->h_rsv_handle) in jbd2_journal_stop()
1721 jbd2_free_handle(handle->h_rsv_handle); in jbd2_journal_stop()
1727 J_ASSERT(journal_current_handle() == handle); in jbd2_journal_stop()
1729 if (is_handle_aborted(handle)) in jbd2_journal_stop()
1734 if (--handle->h_ref > 0) { in jbd2_journal_stop()
1735 jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1, in jbd2_journal_stop()
1736 handle->h_ref); in jbd2_journal_stop()
1740 jbd_debug(4, "Handle %p going down\n", handle); in jbd2_journal_stop()
1743 handle->h_type, handle->h_line_no, in jbd2_journal_stop()
1744 jiffies - handle->h_start_jiffies, in jbd2_journal_stop()
1745 handle->h_sync, handle->h_requested_credits, in jbd2_journal_stop()
1746 (handle->h_requested_credits - in jbd2_journal_stop()
1747 handle->h_buffer_credits)); in jbd2_journal_stop()
1779 if (handle->h_sync && journal->j_last_sync_writer != pid && in jbd2_journal_stop()
1805 if (handle->h_sync) in jbd2_journal_stop()
1808 atomic_sub(handle->h_buffer_credits, in jbd2_journal_stop()
1817 if (handle->h_sync || in jbd2_journal_stop()
1826 "handle %p\n", handle); in jbd2_journal_stop()
1834 if (handle->h_sync && !(current->flags & PF_MEMALLOC)) in jbd2_journal_stop()
1856 if (handle->h_rsv_handle) in jbd2_journal_stop()
1857 jbd2_journal_free_reserved(handle->h_rsv_handle); in jbd2_journal_stop()
1863 memalloc_nofs_restore(handle->saved_alloc_context); in jbd2_journal_stop()
1864 jbd2_free_handle(handle); in jbd2_journal_stop()
2570 static int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *jinode, in jbd2_journal_file_inode() argument
2573 transaction_t *transaction = handle->h_transaction; in jbd2_journal_file_inode()
2576 if (is_handle_aborted(handle)) in jbd2_journal_file_inode()
2625 int jbd2_journal_inode_ranged_write(handle_t *handle, in jbd2_journal_inode_ranged_write() argument
2628 return jbd2_journal_file_inode(handle, jinode, in jbd2_journal_inode_ranged_write()
2633 int jbd2_journal_inode_ranged_wait(handle_t *handle, struct jbd2_inode *jinode, in jbd2_journal_inode_ranged_wait() argument
2636 return jbd2_journal_file_inode(handle, jinode, JI_WAIT_DATA, in jbd2_journal_inode_ranged_wait()