Lines Matching refs:journal

134 static inline int hash(journal_t *journal, unsigned long long block)  in hash()  argument
136 return hash_64(block, journal->j_revoke->hash_shift); in hash()
139 static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr, in insert_revoke_hash() argument
152 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in insert_revoke_hash()
153 spin_lock(&journal->j_revoke_lock); in insert_revoke_hash()
155 spin_unlock(&journal->j_revoke_lock); in insert_revoke_hash()
168 static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal, in find_revoke_record() argument
174 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in find_revoke_record()
176 spin_lock(&journal->j_revoke_lock); in find_revoke_record()
180 spin_unlock(&journal->j_revoke_lock); in find_revoke_record()
185 spin_unlock(&journal->j_revoke_lock); in find_revoke_record()
267 int jbd2_journal_init_revoke(journal_t *journal, int hash_size) in jbd2_journal_init_revoke() argument
269 J_ASSERT(journal->j_revoke_table[0] == NULL); in jbd2_journal_init_revoke()
272 journal->j_revoke_table[0] = jbd2_journal_init_revoke_table(hash_size); in jbd2_journal_init_revoke()
273 if (!journal->j_revoke_table[0]) in jbd2_journal_init_revoke()
276 journal->j_revoke_table[1] = jbd2_journal_init_revoke_table(hash_size); in jbd2_journal_init_revoke()
277 if (!journal->j_revoke_table[1]) in jbd2_journal_init_revoke()
280 journal->j_revoke = journal->j_revoke_table[1]; in jbd2_journal_init_revoke()
282 spin_lock_init(&journal->j_revoke_lock); in jbd2_journal_init_revoke()
287 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]); in jbd2_journal_init_revoke()
293 void jbd2_journal_destroy_revoke(journal_t *journal) in jbd2_journal_destroy_revoke() argument
295 journal->j_revoke = NULL; in jbd2_journal_destroy_revoke()
296 if (journal->j_revoke_table[0]) in jbd2_journal_destroy_revoke()
297 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]); in jbd2_journal_destroy_revoke()
298 if (journal->j_revoke_table[1]) in jbd2_journal_destroy_revoke()
299 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[1]); in jbd2_journal_destroy_revoke()
333 journal_t *journal; in jbd2_journal_revoke() local
341 journal = handle->h_transaction->t_journal; in jbd2_journal_revoke()
342 if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){ in jbd2_journal_revoke()
347 bdev = journal->j_fs_dev; in jbd2_journal_revoke()
351 bh = __find_get_block(bdev, blocknr, journal->j_blocksize); in jbd2_journal_revoke()
361 bh2 = __find_get_block(bdev, blocknr, journal->j_blocksize); in jbd2_journal_revoke()
399 err = insert_revoke_hash(journal, blocknr, in jbd2_journal_revoke()
423 journal_t *journal = handle->h_transaction->t_journal; in jbd2_journal_cancel_revoke() local
442 record = find_revoke_record(journal, bh->b_blocknr); in jbd2_journal_cancel_revoke()
446 spin_lock(&journal->j_revoke_lock); in jbd2_journal_cancel_revoke()
448 spin_unlock(&journal->j_revoke_lock); in jbd2_journal_cancel_revoke()
456 record = find_revoke_record(journal, bh->b_blocknr); in jbd2_journal_cancel_revoke()
481 void jbd2_clear_buffer_revoked_flags(journal_t *journal) in jbd2_clear_buffer_revoked_flags() argument
483 struct jbd2_revoke_table_s *revoke = journal->j_revoke; in jbd2_clear_buffer_revoked_flags()
495 bh = __find_get_block(journal->j_fs_dev, in jbd2_clear_buffer_revoked_flags()
497 journal->j_blocksize); in jbd2_clear_buffer_revoked_flags()
510 void jbd2_journal_switch_revoke_table(journal_t *journal) in jbd2_journal_switch_revoke_table() argument
514 if (journal->j_revoke == journal->j_revoke_table[0]) in jbd2_journal_switch_revoke_table()
515 journal->j_revoke = journal->j_revoke_table[1]; in jbd2_journal_switch_revoke_table()
517 journal->j_revoke = journal->j_revoke_table[0]; in jbd2_journal_switch_revoke_table()
519 for (i = 0; i < journal->j_revoke->hash_size; i++) in jbd2_journal_switch_revoke_table()
520 INIT_LIST_HEAD(&journal->j_revoke->hash_table[i]); in jbd2_journal_switch_revoke_table()
527 void jbd2_journal_write_revoke_records(journal_t *journal, in jbd2_journal_write_revoke_records() argument
543 revoke = journal->j_revoke == journal->j_revoke_table[0] ? in jbd2_journal_write_revoke_records()
544 journal->j_revoke_table[1] : journal->j_revoke_table[0]; in jbd2_journal_write_revoke_records()
552 write_one_revoke_record(journal, transaction, log_bufs, in jbd2_journal_write_revoke_records()
561 flush_descriptor(journal, descriptor, offset, write_op); in jbd2_journal_write_revoke_records()
570 static void write_one_revoke_record(journal_t *journal, in write_one_revoke_record() argument
587 if (is_journal_aborted(journal)) in write_one_revoke_record()
594 if (jbd2_journal_has_csum_v2or3(journal)) in write_one_revoke_record()
597 if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) in write_one_revoke_record()
604 if (offset + sz > journal->j_blocksize - csum_size) { in write_one_revoke_record()
605 flush_descriptor(journal, descriptor, offset, write_op); in write_one_revoke_record()
611 descriptor = jbd2_journal_get_descriptor_buffer(journal); in write_one_revoke_record()
627 if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_64BIT)) in write_one_revoke_record()
660 static void flush_descriptor(journal_t *journal, in flush_descriptor() argument
666 if (is_journal_aborted(journal)) { in flush_descriptor()
673 jbd2_revoke_csum_set(journal, descriptor); in flush_descriptor()
704 int jbd2_journal_set_revoke(journal_t *journal, in jbd2_journal_set_revoke() argument
710 record = find_revoke_record(journal, blocknr); in jbd2_journal_set_revoke()
718 return insert_revoke_hash(journal, blocknr, sequence); in jbd2_journal_set_revoke()
728 int jbd2_journal_test_revoke(journal_t *journal, in jbd2_journal_test_revoke() argument
734 record = find_revoke_record(journal, blocknr); in jbd2_journal_test_revoke()
747 void jbd2_journal_clear_revoke(journal_t *journal) in jbd2_journal_clear_revoke() argument
754 revoke = journal->j_revoke; in jbd2_journal_clear_revoke()