• Home
  • Raw
  • Download

Lines Matching refs:handle

271 static int start_this_handle(journal_t *journal, handle_t *handle,  in start_this_handle()  argument
275 int blocks = handle->h_buffer_credits; in start_this_handle()
279 if (handle->h_rsv_handle) in start_this_handle()
280 rsv_blocks = handle->h_rsv_handle->h_buffer_credits; in start_this_handle()
311 jbd_debug(3, "New handle %p going live.\n", handle); in start_this_handle()
332 if (!handle->h_reserved && journal->j_barrier_count) { in start_this_handle()
345 (handle->h_reserved || !journal->j_barrier_count)) { in start_this_handle()
355 if (!handle->h_reserved) { in start_this_handle()
366 handle->h_reserved = 0; in start_this_handle()
373 handle->h_transaction = transaction; in start_this_handle()
374 handle->h_requested_credits = blocks; in start_this_handle()
375 handle->h_start_jiffies = jiffies; in start_this_handle()
379 handle, blocks, in start_this_handle()
383 current->journal_info = handle; in start_this_handle()
385 lock_map_acquire(&handle->h_lockdep_map); in start_this_handle()
395 handle_t *handle = jbd2_alloc_handle(GFP_NOFS); in new_handle() local
396 if (!handle) in new_handle()
398 handle->h_buffer_credits = nblocks; in new_handle()
399 handle->h_ref = 1; in new_handle()
401 lockdep_init_map(&handle->h_lockdep_map, "jbd2_handle", in new_handle()
404 return handle; in new_handle()
430 handle_t *handle = journal_current_handle(); in jbd2__journal_start() local
436 if (handle) { in jbd2__journal_start()
437 J_ASSERT(handle->h_transaction->t_journal == journal); in jbd2__journal_start()
438 handle->h_ref++; in jbd2__journal_start()
439 return handle; in jbd2__journal_start()
442 handle = new_handle(nblocks); in jbd2__journal_start()
443 if (!handle) in jbd2__journal_start()
450 jbd2_free_handle(handle); in jbd2__journal_start()
455 handle->h_rsv_handle = rsv_handle; in jbd2__journal_start()
458 err = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_start()
460 if (handle->h_rsv_handle) in jbd2__journal_start()
461 jbd2_free_handle(handle->h_rsv_handle); in jbd2__journal_start()
462 jbd2_free_handle(handle); in jbd2__journal_start()
465 handle->h_type = type; in jbd2__journal_start()
466 handle->h_line_no = line_no; in jbd2__journal_start()
468 handle->h_transaction->t_tid, type, in jbd2__journal_start()
470 return handle; in jbd2__journal_start()
481 void jbd2_journal_free_reserved(handle_t *handle) in jbd2_journal_free_reserved() argument
483 journal_t *journal = handle->h_journal; in jbd2_journal_free_reserved()
485 WARN_ON(!handle->h_reserved); in jbd2_journal_free_reserved()
486 sub_reserved_credits(journal, handle->h_buffer_credits); in jbd2_journal_free_reserved()
487 jbd2_free_handle(handle); in jbd2_journal_free_reserved()
503 int jbd2_journal_start_reserved(handle_t *handle, unsigned int type, in jbd2_journal_start_reserved() argument
506 journal_t *journal = handle->h_journal; in jbd2_journal_start_reserved()
509 if (WARN_ON(!handle->h_reserved)) { in jbd2_journal_start_reserved()
511 jbd2_journal_stop(handle); in jbd2_journal_start_reserved()
519 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
523 handle->h_journal = NULL; in jbd2_journal_start_reserved()
528 ret = start_this_handle(journal, handle, GFP_NOFS); in jbd2_journal_start_reserved()
530 handle->h_journal = journal; in jbd2_journal_start_reserved()
531 jbd2_journal_free_reserved(handle); in jbd2_journal_start_reserved()
534 handle->h_type = type; in jbd2_journal_start_reserved()
535 handle->h_line_no = line_no; in jbd2_journal_start_reserved()
560 int jbd2_journal_extend(handle_t *handle, int nblocks) in jbd2_journal_extend() argument
562 transaction_t *transaction = handle->h_transaction; in jbd2_journal_extend()
567 if (is_handle_aborted(handle)) in jbd2_journal_extend()
578 "transaction not running\n", handle, nblocks); in jbd2_journal_extend()
588 "transaction too large\n", handle, nblocks); in jbd2_journal_extend()
596 "insufficient log space\n", handle, nblocks); in jbd2_journal_extend()
603 handle->h_type, handle->h_line_no, in jbd2_journal_extend()
604 handle->h_buffer_credits, in jbd2_journal_extend()
607 handle->h_buffer_credits += nblocks; in jbd2_journal_extend()
608 handle->h_requested_credits += nblocks; in jbd2_journal_extend()
611 jbd_debug(3, "extended handle %p by %d\n", handle, nblocks); in jbd2_journal_extend()
635 int jbd2__journal_restart(handle_t *handle, int nblocks, gfp_t gfp_mask) in jbd2__journal_restart() argument
637 transaction_t *transaction = handle->h_transaction; in jbd2__journal_restart()
644 if (is_handle_aborted(handle)) in jbd2__journal_restart()
653 J_ASSERT(journal_current_handle() == handle); in jbd2__journal_restart()
657 atomic_sub(handle->h_buffer_credits, in jbd2__journal_restart()
659 if (handle->h_rsv_handle) { in jbd2__journal_restart()
661 handle->h_rsv_handle->h_buffer_credits); in jbd2__journal_restart()
667 handle->h_transaction = NULL; in jbd2__journal_restart()
670 jbd_debug(2, "restarting handle %p\n", handle); in jbd2__journal_restart()
676 lock_map_release(&handle->h_lockdep_map); in jbd2__journal_restart()
677 handle->h_buffer_credits = nblocks; in jbd2__journal_restart()
678 ret = start_this_handle(journal, handle, gfp_mask); in jbd2__journal_restart()
684 int jbd2_journal_restart(handle_t *handle, int nblocks) in jbd2_journal_restart() argument
686 return jbd2__journal_restart(handle, nblocks, GFP_NOFS); in jbd2_journal_restart()
812 do_get_write_access(handle_t *handle, struct journal_head *jh, in do_get_write_access() argument
816 transaction_t *transaction = handle->h_transaction; in do_get_write_access()
822 if (is_handle_aborted(handle)) in do_get_write_access()
885 if (is_handle_aborted(handle)) { in do_get_write_access()
1002 jbd2_journal_cancel_revoke(handle, jh); in do_get_write_access()
1013 static bool jbd2_write_access_granted(handle_t *handle, struct buffer_head *bh, in jbd2_write_access_granted() argument
1044 if (READ_ONCE(jh->b_transaction) != handle->h_transaction && in jbd2_write_access_granted()
1045 READ_ONCE(jh->b_next_transaction) != handle->h_transaction) in jbd2_write_access_granted()
1076 int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_write_access() argument
1081 if (jbd2_write_access_granted(handle, bh, false)) in jbd2_journal_get_write_access()
1088 rc = do_get_write_access(handle, jh, 0); in jbd2_journal_get_write_access()
1113 int jbd2_journal_get_create_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_create_access() argument
1115 transaction_t *transaction = handle->h_transaction; in jbd2_journal_get_create_access()
1122 if (is_handle_aborted(handle)) in jbd2_journal_get_create_access()
1180 jbd2_journal_cancel_revoke(handle, jh); in jbd2_journal_get_create_access()
1212 int jbd2_journal_get_undo_access(handle_t *handle, struct buffer_head *bh) in jbd2_journal_get_undo_access() argument
1218 if (jbd2_write_access_granted(handle, bh, true)) in jbd2_journal_get_undo_access()
1229 err = do_get_write_access(handle, jh, 1); in jbd2_journal_get_undo_access()
1331 int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) in jbd2_journal_dirty_metadata() argument
1333 transaction_t *transaction = handle->h_transaction; in jbd2_journal_dirty_metadata()
1338 if (is_handle_aborted(handle)) in jbd2_journal_dirty_metadata()
1373 handle->h_type, handle->h_line_no, in jbd2_journal_dirty_metadata()
1392 if (handle->h_buffer_credits <= 0) { in jbd2_journal_dirty_metadata()
1397 handle->h_buffer_credits--; in jbd2_journal_dirty_metadata()
1493 int jbd2_journal_forget (handle_t *handle, struct buffer_head *bh) in jbd2_journal_forget() argument
1495 transaction_t *transaction = handle->h_transaction; in jbd2_journal_forget()
1502 if (is_handle_aborted(handle)) in jbd2_journal_forget()
1612 handle->h_buffer_credits++; in jbd2_journal_forget()
1633 int jbd2_journal_stop(handle_t *handle) in jbd2_journal_stop() argument
1635 transaction_t *transaction = handle->h_transaction; in jbd2_journal_stop()
1647 if (--handle->h_ref > 0) { in jbd2_journal_stop()
1648 jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1, in jbd2_journal_stop()
1649 handle->h_ref); in jbd2_journal_stop()
1652 if (handle->h_rsv_handle) in jbd2_journal_stop()
1653 jbd2_free_handle(handle->h_rsv_handle); in jbd2_journal_stop()
1659 J_ASSERT(journal_current_handle() == handle); in jbd2_journal_stop()
1661 if (is_handle_aborted(handle)) in jbd2_journal_stop()
1666 if (--handle->h_ref > 0) { in jbd2_journal_stop()
1667 jbd_debug(4, "h_ref %d -> %d\n", handle->h_ref + 1, in jbd2_journal_stop()
1668 handle->h_ref); in jbd2_journal_stop()
1672 jbd_debug(4, "Handle %p going down\n", handle); in jbd2_journal_stop()
1675 handle->h_type, handle->h_line_no, in jbd2_journal_stop()
1676 jiffies - handle->h_start_jiffies, in jbd2_journal_stop()
1677 handle->h_sync, handle->h_requested_credits, in jbd2_journal_stop()
1678 (handle->h_requested_credits - in jbd2_journal_stop()
1679 handle->h_buffer_credits)); in jbd2_journal_stop()
1711 if (handle->h_sync && journal->j_last_sync_writer != pid && in jbd2_journal_stop()
1737 if (handle->h_sync) in jbd2_journal_stop()
1740 atomic_sub(handle->h_buffer_credits, in jbd2_journal_stop()
1749 if (handle->h_sync || in jbd2_journal_stop()
1758 "handle %p\n", handle); in jbd2_journal_stop()
1766 if (handle->h_sync && !(current->flags & PF_MEMALLOC)) in jbd2_journal_stop()
1786 lock_map_release(&handle->h_lockdep_map); in jbd2_journal_stop()
1788 if (handle->h_rsv_handle) in jbd2_journal_stop()
1789 jbd2_journal_free_reserved(handle->h_rsv_handle); in jbd2_journal_stop()
1791 jbd2_free_handle(handle); in jbd2_journal_stop()
2525 int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *jinode) in jbd2_journal_file_inode() argument
2527 transaction_t *transaction = handle->h_transaction; in jbd2_journal_file_inode()
2530 if (is_handle_aborted(handle)) in jbd2_journal_file_inode()