Lines Matching refs:journal
131 static inline int hash(journal_t *journal, unsigned long long block) in hash() argument
133 return hash_64(block, journal->j_revoke->hash_shift); in hash()
136 static int insert_revoke_hash(journal_t *journal, unsigned long long blocknr, in insert_revoke_hash() argument
151 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in insert_revoke_hash()
152 spin_lock(&journal->j_revoke_lock); in insert_revoke_hash()
154 spin_unlock(&journal->j_revoke_lock); in insert_revoke_hash()
160 static struct jbd2_revoke_record_s *find_revoke_record(journal_t *journal, in find_revoke_record() argument
166 hash_list = &journal->j_revoke->hash_table[hash(journal, blocknr)]; in find_revoke_record()
168 spin_lock(&journal->j_revoke_lock); in find_revoke_record()
172 spin_unlock(&journal->j_revoke_lock); in find_revoke_record()
177 spin_unlock(&journal->j_revoke_lock); in find_revoke_record()
255 int jbd2_journal_init_revoke(journal_t *journal, int hash_size) in jbd2_journal_init_revoke() argument
257 J_ASSERT(journal->j_revoke_table[0] == NULL); in jbd2_journal_init_revoke()
260 journal->j_revoke_table[0] = jbd2_journal_init_revoke_table(hash_size); in jbd2_journal_init_revoke()
261 if (!journal->j_revoke_table[0]) in jbd2_journal_init_revoke()
264 journal->j_revoke_table[1] = jbd2_journal_init_revoke_table(hash_size); in jbd2_journal_init_revoke()
265 if (!journal->j_revoke_table[1]) in jbd2_journal_init_revoke()
268 journal->j_revoke = journal->j_revoke_table[1]; in jbd2_journal_init_revoke()
270 spin_lock_init(&journal->j_revoke_lock); in jbd2_journal_init_revoke()
275 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]); in jbd2_journal_init_revoke()
276 journal->j_revoke_table[0] = NULL; in jbd2_journal_init_revoke()
282 void jbd2_journal_destroy_revoke(journal_t *journal) in jbd2_journal_destroy_revoke() argument
284 journal->j_revoke = NULL; in jbd2_journal_destroy_revoke()
285 if (journal->j_revoke_table[0]) in jbd2_journal_destroy_revoke()
286 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[0]); in jbd2_journal_destroy_revoke()
287 if (journal->j_revoke_table[1]) in jbd2_journal_destroy_revoke()
288 jbd2_journal_destroy_revoke_table(journal->j_revoke_table[1]); in jbd2_journal_destroy_revoke()
322 journal_t *journal; in jbd2_journal_revoke() local
330 journal = handle->h_transaction->t_journal; in jbd2_journal_revoke()
331 if (!jbd2_journal_set_features(journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)){ in jbd2_journal_revoke()
336 bdev = journal->j_fs_dev; in jbd2_journal_revoke()
340 bh = __find_get_block(bdev, blocknr, journal->j_blocksize); in jbd2_journal_revoke()
350 bh2 = __find_get_block(bdev, blocknr, journal->j_blocksize); in jbd2_journal_revoke()
388 err = insert_revoke_hash(journal, blocknr, in jbd2_journal_revoke()
412 journal_t *journal = handle->h_transaction->t_journal; in jbd2_journal_cancel_revoke() local
431 record = find_revoke_record(journal, bh->b_blocknr); in jbd2_journal_cancel_revoke()
435 spin_lock(&journal->j_revoke_lock); in jbd2_journal_cancel_revoke()
437 spin_unlock(&journal->j_revoke_lock); in jbd2_journal_cancel_revoke()
445 record = find_revoke_record(journal, bh->b_blocknr); in jbd2_journal_cancel_revoke()
470 void jbd2_clear_buffer_revoked_flags(journal_t *journal) in jbd2_clear_buffer_revoked_flags() argument
472 struct jbd2_revoke_table_s *revoke = journal->j_revoke; in jbd2_clear_buffer_revoked_flags()
484 bh = __find_get_block(journal->j_fs_dev, in jbd2_clear_buffer_revoked_flags()
486 journal->j_blocksize); in jbd2_clear_buffer_revoked_flags()
499 void jbd2_journal_switch_revoke_table(journal_t *journal) in jbd2_journal_switch_revoke_table() argument
503 if (journal->j_revoke == journal->j_revoke_table[0]) in jbd2_journal_switch_revoke_table()
504 journal->j_revoke = journal->j_revoke_table[1]; in jbd2_journal_switch_revoke_table()
506 journal->j_revoke = journal->j_revoke_table[0]; in jbd2_journal_switch_revoke_table()
508 for (i = 0; i < journal->j_revoke->hash_size; i++) in jbd2_journal_switch_revoke_table()
509 INIT_LIST_HEAD(&journal->j_revoke->hash_table[i]); in jbd2_journal_switch_revoke_table()
519 journal_t *journal = transaction->t_journal; in jbd2_journal_write_revoke_records() local
531 revoke = journal->j_revoke == journal->j_revoke_table[0] ? in jbd2_journal_write_revoke_records()
532 journal->j_revoke_table[1] : journal->j_revoke_table[0]; in jbd2_journal_write_revoke_records()
548 flush_descriptor(journal, descriptor, offset); in jbd2_journal_write_revoke_records()
563 journal_t *journal = transaction->t_journal; in write_one_revoke_record() local
572 if (is_journal_aborted(journal)) in write_one_revoke_record()
579 if (jbd2_journal_has_csum_v2or3(journal)) in write_one_revoke_record()
582 if (jbd2_has_feature_64bit(journal)) in write_one_revoke_record()
589 if (offset + sz > journal->j_blocksize - csum_size) { in write_one_revoke_record()
590 flush_descriptor(journal, descriptor, offset); in write_one_revoke_record()
609 if (jbd2_has_feature_64bit(journal)) in write_one_revoke_record()
627 static void flush_descriptor(journal_t *journal, in flush_descriptor() argument
633 if (is_journal_aborted(journal)) { in flush_descriptor()
640 jbd2_descriptor_block_csum_set(journal, descriptor); in flush_descriptor()
671 int jbd2_journal_set_revoke(journal_t *journal, in jbd2_journal_set_revoke() argument
677 record = find_revoke_record(journal, blocknr); in jbd2_journal_set_revoke()
685 return insert_revoke_hash(journal, blocknr, sequence); in jbd2_journal_set_revoke()
695 int jbd2_journal_test_revoke(journal_t *journal, in jbd2_journal_test_revoke() argument
701 record = find_revoke_record(journal, blocknr); in jbd2_journal_test_revoke()
714 void jbd2_journal_clear_revoke(journal_t *journal) in jbd2_journal_clear_revoke() argument
721 revoke = journal->j_revoke; in jbd2_journal_clear_revoke()