• Home
  • Raw
  • Download

Lines Matching refs:journal

90 static void __journal_abort_soft (journal_t *journal, int errno);
91 static const char *journal_dev_name(journal_t *journal, char *buffer);
122 journal_t *journal = arg; in kjournald() local
129 setup_timer(&journal->j_commit_timer, commit_timeout, in kjournald()
135 journal->j_task = current; in kjournald()
136 wake_up(&journal->j_wait_done_commit); in kjournald()
139 journal->j_commit_interval / HZ); in kjournald()
144 spin_lock(&journal->j_state_lock); in kjournald()
147 if (journal->j_flags & JFS_UNMOUNT) in kjournald()
151 journal->j_commit_sequence, journal->j_commit_request); in kjournald()
153 if (journal->j_commit_sequence != journal->j_commit_request) { in kjournald()
155 spin_unlock(&journal->j_state_lock); in kjournald()
156 del_timer_sync(&journal->j_commit_timer); in kjournald()
157 journal_commit_transaction(journal); in kjournald()
158 spin_lock(&journal->j_state_lock); in kjournald()
162 wake_up(&journal->j_wait_done_commit); in kjournald()
170 spin_unlock(&journal->j_state_lock); in kjournald()
172 spin_lock(&journal->j_state_lock); in kjournald()
181 prepare_to_wait(&journal->j_wait_commit, &wait, in kjournald()
183 if (journal->j_commit_sequence != journal->j_commit_request) in kjournald()
185 transaction = journal->j_running_transaction; in kjournald()
189 if (journal->j_flags & JFS_UNMOUNT) in kjournald()
192 spin_unlock(&journal->j_state_lock); in kjournald()
194 spin_lock(&journal->j_state_lock); in kjournald()
196 finish_wait(&journal->j_wait_commit, &wait); in kjournald()
204 transaction = journal->j_running_transaction; in kjournald()
206 journal->j_commit_request = transaction->t_tid; in kjournald()
212 spin_unlock(&journal->j_state_lock); in kjournald()
213 del_timer_sync(&journal->j_commit_timer); in kjournald()
214 journal->j_task = NULL; in kjournald()
215 wake_up(&journal->j_wait_done_commit); in kjournald()
220 static int journal_start_thread(journal_t *journal) in journal_start_thread() argument
224 t = kthread_run(kjournald, journal, "kjournald"); in journal_start_thread()
228 wait_event(journal->j_wait_done_commit, journal->j_task != NULL); in journal_start_thread()
232 static void journal_kill_thread(journal_t *journal) in journal_kill_thread() argument
234 spin_lock(&journal->j_state_lock); in journal_kill_thread()
235 journal->j_flags |= JFS_UNMOUNT; in journal_kill_thread()
237 while (journal->j_task) { in journal_kill_thread()
238 wake_up(&journal->j_wait_commit); in journal_kill_thread()
239 spin_unlock(&journal->j_state_lock); in journal_kill_thread()
240 wait_event(journal->j_wait_done_commit, in journal_kill_thread()
241 journal->j_task == NULL); in journal_kill_thread()
242 spin_lock(&journal->j_state_lock); in journal_kill_thread()
244 spin_unlock(&journal->j_state_lock); in journal_kill_thread()
298 journal_t *journal = transaction->t_journal; in journal_write_metadata_buffer() local
394 spin_lock(&journal->j_list_lock); in journal_write_metadata_buffer()
396 spin_unlock(&journal->j_list_lock); in journal_write_metadata_buffer()
418 int __log_space_left(journal_t *journal) in __log_space_left() argument
420 int left = journal->j_free; in __log_space_left()
422 assert_spin_locked(&journal->j_state_lock); in __log_space_left()
442 int __log_start_commit(journal_t *journal, tid_t target) in __log_start_commit() argument
449 if (journal->j_running_transaction && in __log_start_commit()
450 journal->j_running_transaction->t_tid == target) { in __log_start_commit()
456 journal->j_commit_request = target; in __log_start_commit()
458 journal->j_commit_request, in __log_start_commit()
459 journal->j_commit_sequence); in __log_start_commit()
460 wake_up(&journal->j_wait_commit); in __log_start_commit()
462 } else if (!tid_geq(journal->j_commit_request, target)) in __log_start_commit()
467 journal->j_commit_request, journal->j_commit_sequence, in __log_start_commit()
468 target, journal->j_running_transaction ? in __log_start_commit()
469 journal->j_running_transaction->t_tid : 0); in __log_start_commit()
473 int log_start_commit(journal_t *journal, tid_t tid) in log_start_commit() argument
477 spin_lock(&journal->j_state_lock); in log_start_commit()
478 ret = __log_start_commit(journal, tid); in log_start_commit()
479 spin_unlock(&journal->j_state_lock); in log_start_commit()
493 int journal_force_commit_nested(journal_t *journal) in journal_force_commit_nested() argument
498 spin_lock(&journal->j_state_lock); in journal_force_commit_nested()
499 if (journal->j_running_transaction && !current->journal_info) { in journal_force_commit_nested()
500 transaction = journal->j_running_transaction; in journal_force_commit_nested()
501 __log_start_commit(journal, transaction->t_tid); in journal_force_commit_nested()
502 } else if (journal->j_committing_transaction) in journal_force_commit_nested()
503 transaction = journal->j_committing_transaction; in journal_force_commit_nested()
506 spin_unlock(&journal->j_state_lock); in journal_force_commit_nested()
511 spin_unlock(&journal->j_state_lock); in journal_force_commit_nested()
512 log_wait_commit(journal, tid); in journal_force_commit_nested()
521 int journal_start_commit(journal_t *journal, tid_t *ptid) in journal_start_commit() argument
525 spin_lock(&journal->j_state_lock); in journal_start_commit()
526 if (journal->j_running_transaction) { in journal_start_commit()
527 tid_t tid = journal->j_running_transaction->t_tid; in journal_start_commit()
529 __log_start_commit(journal, tid); in journal_start_commit()
535 } else if (journal->j_committing_transaction) { in journal_start_commit()
541 *ptid = journal->j_committing_transaction->t_tid; in journal_start_commit()
544 spin_unlock(&journal->j_state_lock); in journal_start_commit()
552 int log_wait_commit(journal_t *journal, tid_t tid) in log_wait_commit() argument
557 spin_lock(&journal->j_state_lock); in log_wait_commit()
558 if (!tid_geq(journal->j_commit_request, tid)) { in log_wait_commit()
561 __func__, journal->j_commit_request, tid); in log_wait_commit()
563 spin_unlock(&journal->j_state_lock); in log_wait_commit()
565 spin_lock(&journal->j_state_lock); in log_wait_commit()
566 while (tid_gt(tid, journal->j_commit_sequence)) { in log_wait_commit()
568 tid, journal->j_commit_sequence); in log_wait_commit()
569 wake_up(&journal->j_wait_commit); in log_wait_commit()
570 spin_unlock(&journal->j_state_lock); in log_wait_commit()
571 wait_event(journal->j_wait_done_commit, in log_wait_commit()
572 !tid_gt(tid, journal->j_commit_sequence)); in log_wait_commit()
573 spin_lock(&journal->j_state_lock); in log_wait_commit()
575 spin_unlock(&journal->j_state_lock); in log_wait_commit()
577 if (unlikely(is_journal_aborted(journal))) { in log_wait_commit()
590 int journal_trans_will_send_data_barrier(journal_t *journal, tid_t tid) in journal_trans_will_send_data_barrier() argument
595 if (!(journal->j_flags & JFS_BARRIER)) in journal_trans_will_send_data_barrier()
597 spin_lock(&journal->j_state_lock); in journal_trans_will_send_data_barrier()
599 if (tid_geq(journal->j_commit_sequence, tid)) in journal_trans_will_send_data_barrier()
605 commit_trans = journal->j_committing_transaction; in journal_trans_will_send_data_barrier()
611 spin_unlock(&journal->j_state_lock); in journal_trans_will_send_data_barrier()
620 int journal_next_log_block(journal_t *journal, unsigned int *retp) in journal_next_log_block() argument
624 spin_lock(&journal->j_state_lock); in journal_next_log_block()
625 J_ASSERT(journal->j_free > 1); in journal_next_log_block()
627 blocknr = journal->j_head; in journal_next_log_block()
628 journal->j_head++; in journal_next_log_block()
629 journal->j_free--; in journal_next_log_block()
630 if (journal->j_head == journal->j_last) in journal_next_log_block()
631 journal->j_head = journal->j_first; in journal_next_log_block()
632 spin_unlock(&journal->j_state_lock); in journal_next_log_block()
633 return journal_bmap(journal, blocknr, retp); in journal_next_log_block()
643 int journal_bmap(journal_t *journal, unsigned int blocknr, in journal_bmap() argument
649 if (journal->j_inode) { in journal_bmap()
650 ret = bmap(journal->j_inode, blocknr); in journal_bmap()
660 bdevname(journal->j_dev, b)); in journal_bmap()
662 __journal_abort_soft(journal, err); in journal_bmap()
680 struct journal_head *journal_get_descriptor_buffer(journal_t *journal) in journal_get_descriptor_buffer() argument
686 err = journal_next_log_block(journal, &blocknr); in journal_get_descriptor_buffer()
691 bh = __getblk(journal->j_dev, blocknr, journal->j_blocksize); in journal_get_descriptor_buffer()
695 memset(bh->b_data, 0, journal->j_blocksize); in journal_get_descriptor_buffer()
713 journal_t *journal; in journal_init_common() local
716 journal = kzalloc(sizeof(*journal), GFP_KERNEL); in journal_init_common()
717 if (!journal) in journal_init_common()
720 init_waitqueue_head(&journal->j_wait_transaction_locked); in journal_init_common()
721 init_waitqueue_head(&journal->j_wait_logspace); in journal_init_common()
722 init_waitqueue_head(&journal->j_wait_done_commit); in journal_init_common()
723 init_waitqueue_head(&journal->j_wait_checkpoint); in journal_init_common()
724 init_waitqueue_head(&journal->j_wait_commit); in journal_init_common()
725 init_waitqueue_head(&journal->j_wait_updates); in journal_init_common()
726 mutex_init(&journal->j_checkpoint_mutex); in journal_init_common()
727 spin_lock_init(&journal->j_revoke_lock); in journal_init_common()
728 spin_lock_init(&journal->j_list_lock); in journal_init_common()
729 spin_lock_init(&journal->j_state_lock); in journal_init_common()
731 journal->j_commit_interval = (HZ * JBD_DEFAULT_MAX_COMMIT_AGE); in journal_init_common()
734 journal->j_flags = JFS_ABORT; in journal_init_common()
737 err = journal_init_revoke(journal, JOURNAL_REVOKE_DEFAULT_HASH); in journal_init_common()
739 kfree(journal); in journal_init_common()
742 return journal; in journal_init_common()
774 journal_t *journal = journal_init_common(); in journal_init_dev() local
778 if (!journal) in journal_init_dev()
782 journal->j_blocksize = blocksize; in journal_init_dev()
783 n = journal->j_blocksize / sizeof(journal_block_tag_t); in journal_init_dev()
784 journal->j_wbufsize = n; in journal_init_dev()
785 journal->j_wbuf = kmalloc(n * sizeof(struct buffer_head*), GFP_KERNEL); in journal_init_dev()
786 if (!journal->j_wbuf) { in journal_init_dev()
791 journal->j_dev = bdev; in journal_init_dev()
792 journal->j_fs_dev = fs_dev; in journal_init_dev()
793 journal->j_blk_offset = start; in journal_init_dev()
794 journal->j_maxlen = len; in journal_init_dev()
796 bh = __getblk(journal->j_dev, start, journal->j_blocksize); in journal_init_dev()
803 journal->j_sb_buffer = bh; in journal_init_dev()
804 journal->j_superblock = (journal_superblock_t *)bh->b_data; in journal_init_dev()
806 return journal; in journal_init_dev()
808 kfree(journal->j_wbuf); in journal_init_dev()
809 kfree(journal); in journal_init_dev()
824 journal_t *journal = journal_init_common(); in journal_init_inode() local
829 if (!journal) in journal_init_inode()
832 journal->j_dev = journal->j_fs_dev = inode->i_sb->s_bdev; in journal_init_inode()
833 journal->j_inode = inode; in journal_init_inode()
836 journal, inode->i_sb->s_id, inode->i_ino, in journal_init_inode()
840 journal->j_maxlen = inode->i_size >> inode->i_sb->s_blocksize_bits; in journal_init_inode()
841 journal->j_blocksize = inode->i_sb->s_blocksize; in journal_init_inode()
844 n = journal->j_blocksize / sizeof(journal_block_tag_t); in journal_init_inode()
845 journal->j_wbufsize = n; in journal_init_inode()
846 journal->j_wbuf = kmalloc(n * sizeof(struct buffer_head*), GFP_KERNEL); in journal_init_inode()
847 if (!journal->j_wbuf) { in journal_init_inode()
853 err = journal_bmap(journal, 0, &blocknr); in journal_init_inode()
861 bh = __getblk(journal->j_dev, blocknr, journal->j_blocksize); in journal_init_inode()
868 journal->j_sb_buffer = bh; in journal_init_inode()
869 journal->j_superblock = (journal_superblock_t *)bh->b_data; in journal_init_inode()
871 return journal; in journal_init_inode()
873 kfree(journal->j_wbuf); in journal_init_inode()
874 kfree(journal); in journal_init_inode()
883 static void journal_fail_superblock (journal_t *journal) in journal_fail_superblock() argument
885 struct buffer_head *bh = journal->j_sb_buffer; in journal_fail_superblock()
887 journal->j_sb_buffer = NULL; in journal_fail_superblock()
897 static int journal_reset(journal_t *journal) in journal_reset() argument
899 journal_superblock_t *sb = journal->j_superblock; in journal_reset()
907 journal_fail_superblock(journal); in journal_reset()
911 journal->j_first = first; in journal_reset()
912 journal->j_last = last; in journal_reset()
914 journal->j_head = first; in journal_reset()
915 journal->j_tail = first; in journal_reset()
916 journal->j_free = last - first; in journal_reset()
918 journal->j_tail_sequence = journal->j_transaction_sequence; in journal_reset()
919 journal->j_commit_sequence = journal->j_transaction_sequence - 1; in journal_reset()
920 journal->j_commit_request = journal->j_commit_sequence; in journal_reset()
922 journal->j_max_transaction_buffers = journal->j_maxlen / 4; in journal_reset()
925 journal_update_superblock(journal, 1); in journal_reset()
926 return journal_start_thread(journal); in journal_reset()
937 int journal_create(journal_t *journal) in journal_create() argument
944 if (journal->j_maxlen < JFS_MIN_JOURNAL_BLOCKS) { in journal_create()
946 journal->j_maxlen); in journal_create()
947 journal_fail_superblock(journal); in journal_create()
951 if (journal->j_inode == NULL) { in journal_create()
964 for (i = 0; i < journal->j_maxlen; i++) { in journal_create()
965 err = journal_bmap(journal, i, &blocknr); in journal_create()
968 bh = __getblk(journal->j_dev, blocknr, journal->j_blocksize); in journal_create()
972 memset (bh->b_data, 0, journal->j_blocksize); in journal_create()
981 sync_blockdev(journal->j_dev); in journal_create()
985 sb = journal->j_superblock; in journal_create()
990 sb->s_blocksize = cpu_to_be32(journal->j_blocksize); in journal_create()
991 sb->s_maxlen = cpu_to_be32(journal->j_maxlen); in journal_create()
994 journal->j_transaction_sequence = 1; in journal_create()
996 journal->j_flags &= ~JFS_ABORT; in journal_create()
997 journal->j_format_version = 2; in journal_create()
999 return journal_reset(journal); in journal_create()
1010 void journal_update_superblock(journal_t *journal, int wait) in journal_update_superblock() argument
1012 journal_superblock_t *sb = journal->j_superblock; in journal_update_superblock()
1013 struct buffer_head *bh = journal->j_sb_buffer; in journal_update_superblock()
1022 if (sb->s_start == 0 && journal->j_tail_sequence == in journal_update_superblock()
1023 journal->j_transaction_sequence) { in journal_update_superblock()
1026 journal->j_tail, journal->j_tail_sequence, in journal_update_superblock()
1027 journal->j_errno); in journal_update_superblock()
1043 journal_dev_name(journal, b)); in journal_update_superblock()
1048 spin_lock(&journal->j_state_lock); in journal_update_superblock()
1050 journal->j_tail, journal->j_tail_sequence, journal->j_errno); in journal_update_superblock()
1052 sb->s_sequence = cpu_to_be32(journal->j_tail_sequence); in journal_update_superblock()
1053 sb->s_start = cpu_to_be32(journal->j_tail); in journal_update_superblock()
1054 sb->s_errno = cpu_to_be32(journal->j_errno); in journal_update_superblock()
1055 spin_unlock(&journal->j_state_lock); in journal_update_superblock()
1065 journal_dev_name(journal, b)); in journal_update_superblock()
1072 trace_jbd_update_superblock_end(journal, wait); in journal_update_superblock()
1078 spin_lock(&journal->j_state_lock); in journal_update_superblock()
1080 journal->j_flags &= ~JFS_FLUSHED; in journal_update_superblock()
1082 journal->j_flags |= JFS_FLUSHED; in journal_update_superblock()
1083 spin_unlock(&journal->j_state_lock); in journal_update_superblock()
1091 static int journal_get_superblock(journal_t *journal) in journal_get_superblock() argument
1097 bh = journal->j_sb_buffer; in journal_get_superblock()
1110 sb = journal->j_superblock; in journal_get_superblock()
1115 sb->s_blocksize != cpu_to_be32(journal->j_blocksize)) { in journal_get_superblock()
1122 journal->j_format_version = 1; in journal_get_superblock()
1125 journal->j_format_version = 2; in journal_get_superblock()
1132 if (be32_to_cpu(sb->s_maxlen) < journal->j_maxlen) in journal_get_superblock()
1133 journal->j_maxlen = be32_to_cpu(sb->s_maxlen); in journal_get_superblock()
1134 else if (be32_to_cpu(sb->s_maxlen) > journal->j_maxlen) { in journal_get_superblock()
1140 be32_to_cpu(sb->s_first) >= journal->j_maxlen) { in journal_get_superblock()
1150 journal_fail_superblock(journal); in journal_get_superblock()
1159 static int load_superblock(journal_t *journal) in load_superblock() argument
1164 err = journal_get_superblock(journal); in load_superblock()
1168 sb = journal->j_superblock; in load_superblock()
1170 journal->j_tail_sequence = be32_to_cpu(sb->s_sequence); in load_superblock()
1171 journal->j_tail = be32_to_cpu(sb->s_start); in load_superblock()
1172 journal->j_first = be32_to_cpu(sb->s_first); in load_superblock()
1173 journal->j_last = be32_to_cpu(sb->s_maxlen); in load_superblock()
1174 journal->j_errno = be32_to_cpu(sb->s_errno); in load_superblock()
1188 int journal_load(journal_t *journal) in journal_load() argument
1193 err = load_superblock(journal); in journal_load()
1197 sb = journal->j_superblock; in journal_load()
1201 if (journal->j_format_version >= 2) { in journal_load()
1214 if (journal_recover(journal)) in journal_load()
1220 if (journal_reset(journal)) in journal_load()
1223 journal->j_flags &= ~JFS_ABORT; in journal_load()
1224 journal->j_flags |= JFS_LOADED; in journal_load()
1240 int journal_destroy(journal_t *journal) in journal_destroy() argument
1246 journal_kill_thread(journal); in journal_destroy()
1249 if (journal->j_running_transaction) in journal_destroy()
1250 journal_commit_transaction(journal); in journal_destroy()
1255 spin_lock(&journal->j_list_lock); in journal_destroy()
1256 while (journal->j_checkpoint_transactions != NULL) { in journal_destroy()
1257 spin_unlock(&journal->j_list_lock); in journal_destroy()
1258 log_do_checkpoint(journal); in journal_destroy()
1259 spin_lock(&journal->j_list_lock); in journal_destroy()
1262 J_ASSERT(journal->j_running_transaction == NULL); in journal_destroy()
1263 J_ASSERT(journal->j_committing_transaction == NULL); in journal_destroy()
1264 J_ASSERT(journal->j_checkpoint_transactions == NULL); in journal_destroy()
1265 spin_unlock(&journal->j_list_lock); in journal_destroy()
1267 if (journal->j_sb_buffer) { in journal_destroy()
1268 if (!is_journal_aborted(journal)) { in journal_destroy()
1270 journal->j_tail = 0; in journal_destroy()
1271 journal->j_tail_sequence = in journal_destroy()
1272 ++journal->j_transaction_sequence; in journal_destroy()
1273 journal_update_superblock(journal, 1); in journal_destroy()
1277 brelse(journal->j_sb_buffer); in journal_destroy()
1280 if (journal->j_inode) in journal_destroy()
1281 iput(journal->j_inode); in journal_destroy()
1282 if (journal->j_revoke) in journal_destroy()
1283 journal_destroy_revoke(journal); in journal_destroy()
1284 kfree(journal->j_wbuf); in journal_destroy()
1285 kfree(journal); in journal_destroy()
1302 int journal_check_used_features (journal_t *journal, unsigned long compat, in journal_check_used_features() argument
1309 if (journal->j_format_version == 1) in journal_check_used_features()
1312 sb = journal->j_superblock; in journal_check_used_features()
1333 int journal_check_available_features (journal_t *journal, unsigned long compat, in journal_check_available_features() argument
1343 if (journal->j_format_version != 2) in journal_check_available_features()
1366 int journal_set_features (journal_t *journal, unsigned long compat, in journal_set_features() argument
1371 if (journal_check_used_features(journal, compat, ro, incompat)) in journal_set_features()
1374 if (!journal_check_available_features(journal, compat, ro, incompat)) in journal_set_features()
1380 sb = journal->j_superblock; in journal_set_features()
1397 int journal_update_format (journal_t *journal) in journal_update_format() argument
1402 err = journal_get_superblock(journal); in journal_update_format()
1406 sb = journal->j_superblock; in journal_update_format()
1412 return journal_convert_superblock_v1(journal, sb); in journal_update_format()
1419 static int journal_convert_superblock_v1(journal_t *journal, in journal_convert_superblock_v1() argument
1435 journal->j_format_version = 2; in journal_convert_superblock_v1()
1437 bh = journal->j_sb_buffer; in journal_convert_superblock_v1()
1454 int journal_flush(journal_t *journal) in journal_flush() argument
1460 spin_lock(&journal->j_state_lock); in journal_flush()
1463 if (journal->j_running_transaction) { in journal_flush()
1464 transaction = journal->j_running_transaction; in journal_flush()
1465 __log_start_commit(journal, transaction->t_tid); in journal_flush()
1466 } else if (journal->j_committing_transaction) in journal_flush()
1467 transaction = journal->j_committing_transaction; in journal_flush()
1473 spin_unlock(&journal->j_state_lock); in journal_flush()
1474 log_wait_commit(journal, tid); in journal_flush()
1476 spin_unlock(&journal->j_state_lock); in journal_flush()
1480 spin_lock(&journal->j_list_lock); in journal_flush()
1481 while (!err && journal->j_checkpoint_transactions != NULL) { in journal_flush()
1482 spin_unlock(&journal->j_list_lock); in journal_flush()
1483 mutex_lock(&journal->j_checkpoint_mutex); in journal_flush()
1484 err = log_do_checkpoint(journal); in journal_flush()
1485 mutex_unlock(&journal->j_checkpoint_mutex); in journal_flush()
1486 spin_lock(&journal->j_list_lock); in journal_flush()
1488 spin_unlock(&journal->j_list_lock); in journal_flush()
1490 if (is_journal_aborted(journal)) in journal_flush()
1493 cleanup_journal_tail(journal); in journal_flush()
1500 spin_lock(&journal->j_state_lock); in journal_flush()
1501 old_tail = journal->j_tail; in journal_flush()
1502 journal->j_tail = 0; in journal_flush()
1503 spin_unlock(&journal->j_state_lock); in journal_flush()
1504 journal_update_superblock(journal, 1); in journal_flush()
1505 spin_lock(&journal->j_state_lock); in journal_flush()
1506 journal->j_tail = old_tail; in journal_flush()
1508 J_ASSERT(!journal->j_running_transaction); in journal_flush()
1509 J_ASSERT(!journal->j_committing_transaction); in journal_flush()
1510 J_ASSERT(!journal->j_checkpoint_transactions); in journal_flush()
1511 J_ASSERT(journal->j_head == journal->j_tail); in journal_flush()
1512 J_ASSERT(journal->j_tail_sequence == journal->j_transaction_sequence); in journal_flush()
1513 spin_unlock(&journal->j_state_lock); in journal_flush()
1530 int journal_wipe(journal_t *journal, int write) in journal_wipe() argument
1534 J_ASSERT (!(journal->j_flags & JFS_LOADED)); in journal_wipe()
1536 err = load_superblock(journal); in journal_wipe()
1540 if (!journal->j_tail) in journal_wipe()
1546 err = journal_skip_recovery(journal); in journal_wipe()
1548 journal_update_superblock(journal, 1); in journal_wipe()
1559 static const char *journal_dev_name(journal_t *journal, char *buffer) in journal_dev_name() argument
1563 if (journal->j_inode) in journal_dev_name()
1564 bdev = journal->j_inode->i_sb->s_bdev; in journal_dev_name()
1566 bdev = journal->j_dev; in journal_dev_name()
1584 static void __journal_abort_hard(journal_t *journal) in __journal_abort_hard() argument
1589 if (journal->j_flags & JFS_ABORT) in __journal_abort_hard()
1593 journal_dev_name(journal, b)); in __journal_abort_hard()
1595 spin_lock(&journal->j_state_lock); in __journal_abort_hard()
1596 journal->j_flags |= JFS_ABORT; in __journal_abort_hard()
1597 transaction = journal->j_running_transaction; in __journal_abort_hard()
1599 __log_start_commit(journal, transaction->t_tid); in __journal_abort_hard()
1600 spin_unlock(&journal->j_state_lock); in __journal_abort_hard()
1605 static void __journal_abort_soft (journal_t *journal, int errno) in __journal_abort_soft() argument
1607 if (journal->j_flags & JFS_ABORT) in __journal_abort_soft()
1610 if (!journal->j_errno) in __journal_abort_soft()
1611 journal->j_errno = errno; in __journal_abort_soft()
1613 __journal_abort_hard(journal); in __journal_abort_soft()
1616 journal_update_superblock(journal, 1); in __journal_abort_soft()
1665 void journal_abort(journal_t *journal, int errno) in journal_abort() argument
1667 __journal_abort_soft(journal, errno); in journal_abort()
1681 int journal_errno(journal_t *journal) in journal_errno() argument
1685 spin_lock(&journal->j_state_lock); in journal_errno()
1686 if (journal->j_flags & JFS_ABORT) in journal_errno()
1689 err = journal->j_errno; in journal_errno()
1690 spin_unlock(&journal->j_state_lock); in journal_errno()
1701 int journal_clear_err(journal_t *journal) in journal_clear_err() argument
1705 spin_lock(&journal->j_state_lock); in journal_clear_err()
1706 if (journal->j_flags & JFS_ABORT) in journal_clear_err()
1709 journal->j_errno = 0; in journal_clear_err()
1710 spin_unlock(&journal->j_state_lock); in journal_clear_err()
1721 void journal_ack_err(journal_t *journal) in journal_ack_err() argument
1723 spin_lock(&journal->j_state_lock); in journal_ack_err()
1724 if (journal->j_errno) in journal_ack_err()
1725 journal->j_flags |= JFS_ACK_ERR; in journal_ack_err()
1726 spin_unlock(&journal->j_state_lock); in journal_ack_err()