transaction.c (5804c19b80bf625c6a9925317f845e497434d6d3) | transaction.c (b81c3758c1df0c308ba8b28934fcd63d9dba9c41) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * linux/fs/jbd2/transaction.c 4 * 5 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 6 * 7 * Copyright 1998 Red Hat corp --- All Rights Reserved 8 * --- 49 unchanged lines hidden (view full) --- 58void jbd2_journal_free_transaction(transaction_t *transaction) 59{ 60 if (unlikely(ZERO_OR_NULL_PTR(transaction))) 61 return; 62 kmem_cache_free(transaction_cache, transaction); 63} 64 65/* | 1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * linux/fs/jbd2/transaction.c 4 * 5 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 6 * 7 * Copyright 1998 Red Hat corp --- All Rights Reserved 8 * --- 49 unchanged lines hidden (view full) --- 58void jbd2_journal_free_transaction(transaction_t *transaction) 59{ 60 if (unlikely(ZERO_OR_NULL_PTR(transaction))) 61 return; 62 kmem_cache_free(transaction_cache, transaction); 63} 64 65/* |
66 * Base amount of descriptor blocks we reserve for each transaction. 67 */ 68static int jbd2_descriptor_blocks_per_trans(journal_t *journal) 69{ 70 int tag_space = journal->j_blocksize - sizeof(journal_header_t); 71 int tags_per_block; 72 73 /* Subtract UUID */ 74 tag_space -= 16; 75 if (jbd2_journal_has_csum_v2or3(journal)) 76 tag_space -= sizeof(struct jbd2_journal_block_tail); 77 /* Commit code leaves a slack space of 16 bytes at the end of block */ 78 tags_per_block = (tag_space - 16) / journal_tag_bytes(journal); 79 /* 80 * Revoke descriptors are accounted separately so we need to reserve 81 * space for commit block and normal transaction descriptor blocks. 82 */ 83 return 1 + DIV_ROUND_UP(journal->j_max_transaction_buffers, 84 tags_per_block); 85} 86 87/* | |
88 * jbd2_get_transaction: obtain a new transaction_t object. 89 * 90 * Simply initialise a new transaction. Initialize it in 91 * RUNNING state and add it to the current journal (which should not 92 * have an existing running transaction: we only make a new transaction 93 * once we have started to commit the old one). 94 * 95 * Preconditions: --- 8 unchanged lines hidden (view full) --- 104{ 105 transaction->t_journal = journal; 106 transaction->t_state = T_RUNNING; 107 transaction->t_start_time = ktime_get(); 108 transaction->t_tid = journal->j_transaction_sequence++; 109 transaction->t_expires = jiffies + journal->j_commit_interval; 110 atomic_set(&transaction->t_updates, 0); 111 atomic_set(&transaction->t_outstanding_credits, | 66 * jbd2_get_transaction: obtain a new transaction_t object. 67 * 68 * Simply initialise a new transaction. Initialize it in 69 * RUNNING state and add it to the current journal (which should not 70 * have an existing running transaction: we only make a new transaction 71 * once we have started to commit the old one). 72 * 73 * Preconditions: --- 8 unchanged lines hidden (view full) --- 82{ 83 transaction->t_journal = journal; 84 transaction->t_state = T_RUNNING; 85 transaction->t_start_time = ktime_get(); 86 transaction->t_tid = journal->j_transaction_sequence++; 87 transaction->t_expires = jiffies + journal->j_commit_interval; 88 atomic_set(&transaction->t_updates, 0); 89 atomic_set(&transaction->t_outstanding_credits, |
112 jbd2_descriptor_blocks_per_trans(journal) + | 90 journal->j_transaction_overhead_buffers + |
113 atomic_read(&journal->j_reserved_credits)); 114 atomic_set(&transaction->t_outstanding_revokes, 0); 115 atomic_set(&transaction->t_handle_count, 0); 116 INIT_LIST_HEAD(&transaction->t_inode_list); 117 INIT_LIST_HEAD(&transaction->t_private_list); 118 119 /* Set up the commit timer for the new transaction. */ 120 journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); --- 2645 unchanged lines hidden --- | 91 atomic_read(&journal->j_reserved_credits)); 92 atomic_set(&transaction->t_outstanding_revokes, 0); 93 atomic_set(&transaction->t_handle_count, 0); 94 INIT_LIST_HEAD(&transaction->t_inode_list); 95 INIT_LIST_HEAD(&transaction->t_private_list); 96 97 /* Set up the commit timer for the new transaction. */ 98 journal->j_commit_timer.expires = round_jiffies_up(transaction->t_expires); --- 2645 unchanged lines hidden --- |