Lines Matching defs:journal

17  *   transaction's revoked blocks to the journal
34 * need either to cancel the journal entry or to write the revoke
62 * running transaction (is pointed to by journal->j_revoke), the other one
99 journal replay, this involves recording the transaction ID of the
131 static inline int hash(journal_t *journal, unsigned long long block)
133 return hash_64(block, journal->j_revoke->hash_shift);
136 static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr,
151 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)];
152 spin_lock(&journal->j_revoke_lock);
154 spin_unlock(&journal->j_revoke_lock);
158 /* Find a revoke record in the journal's hash table. */
160 static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal,
166 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)];
168 spin_lock(&journal->j_revoke_lock);
172 spin_unlock(&journal->j_revoke_lock);
177 spin_unlock(&journal->j_revoke_lock);
262 /* Initialise the revoke table for a given journal to a given size. */
263 int jbd2_journal_init_revoke(journal_t *journal, int hash_size)
265 J_ASSERT(journal->j_revoke_table[0] == NULL);
268 journal->j_revoke_table[0] = jbd2_journal_init_revoke_table(hash_size);
269 if (!journal->j_revoke_table[0])
272 journal->j_revoke_table[1] = jbd2_journal_init_revoke_table(hash_size);
273 if (!journal->j_revoke_table[1])
276 journal->j_revoke = journal->j_revoke_table[1];
278 spin_lock_init(&journal->j_revoke_lock);
283 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
284 journal->j_revoke_table[0] = NULL;
289 /* Destroy a journal's revoke table. The table must already be empty! */
290 void jbd2_journal_destroy_revoke(journal_t *journal)
292 journal->j_revoke = NULL;
293 if (journal->j_revoke_table[0])
294 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]);
295 if (journal->j_revoke_table[1])
296 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[1]);
303 * jbd2_journal_revoke: revoke a given buffer_head from the journal. This
330 journal_t *journal;
338 journal = handle->h_transaction->t_journal;
339 if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){
344 bdev = journal->j_fs_dev;
348 bh = __find_get_block(bdev, blocknr, journal->j_blocksize);
358 bh2 = __find_get_block(bdev, blocknr, journal->j_blocksize);
402 err = insert_revoke_hash(journal, blocknr,
426 journal_t *journal = handle->h_transaction->t_journal;
445 record = find_revoke_record(journal, bh->b_blocknr);
449 spin_lock(&journal->j_revoke_lock);
451 spin_unlock(&journal->j_revoke_lock);
459 record = find_revoke_record(journal, bh->b_blocknr);
484 void jbd2_clear_buffer_revoked_flags(journal_t *journal)
486 struct jbd2_revoke_table_s *revoke = journal->j_revoke;
498 bh = __find_get_block(journal->j_fs_dev,
500 journal->j_blocksize);
513 void jbd2_journal_switch_revoke_table(journal_t *journal)
517 if (journal->j_revoke == journal->j_revoke_table[0])
518 journal->j_revoke = journal->j_revoke_table[1];
520 journal->j_revoke = journal->j_revoke_table[0];
522 for (i = 0; i < journal->j_revoke->hash_size; i++)
523 INIT_LIST_HEAD(&journal->j_revoke->hash_table[i]);
527 * Write revoke records to the journal for all entries in the current
533 journal_t *journal = transaction->t_journal;
545 revoke = journal->j_revoke == journal->j_revoke_table[0] ?
546 journal->j_revoke_table[1] : journal->j_revoke_table[0];
562 flush_descriptor(journal, descriptor, offset);
577 journal_t *journal = transaction->t_journal;
585 revoke records: only the IO to the journal is omitted. */
586 if (is_journal_aborted(journal))
593 if (jbd2_journal_has_csum_v2or3(journal))
596 if (jbd2_has_feature_64bit(journal))
603 if (offset + sz > journal->j_blocksize - csum_size) {
604 flush_descriptor(journal, descriptor, offset);
623 if (jbd2_has_feature_64bit(journal))
635 * Flush a revoke descriptor out to the journal. If we are aborting,
638 * journal buffer list.
641 static void flush_descriptor(journal_t *journal,
647 if (is_journal_aborted(journal))
652 jbd2_descriptor_block_csum_set(journal, descriptor);
667 * of each revoke in the journal
683 int jbd2_journal_set_revoke(journal_t *journal,
689 record = find_revoke_record(journal, blocknr);
697 return insert_revoke_hash(journal, blocknr, sequence);
707 int jbd2_journal_test_revoke(journal_t *journal,
713 record = find_revoke_record(journal, blocknr);
726 void jbd2_journal_clear_revoke(journal_t *journal)
733 revoke = journal->j_revoke;