• Home
  • Raw
  • Download

Lines Matching refs:log

47 #define	xlog_recover_check_summary(log)  argument
64 struct xlog *log, in xlog_verify_bno() argument
68 if (blk_no < 0 || blk_no >= log->l_logBBsize) in xlog_verify_bno()
70 if (bbcount <= 0 || (blk_no + bbcount) > log->l_logBBsize) in xlog_verify_bno()
81 struct xlog *log, in xlog_alloc_buffer() argument
88 if (XFS_IS_CORRUPT(log->l_mp, !xlog_verify_bno(log, 0, nbblks))) { in xlog_alloc_buffer()
89 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_alloc_buffer()
108 if (nbblks > 1 && log->l_sectBBsize > 1) in xlog_alloc_buffer()
109 nbblks += log->l_sectBBsize; in xlog_alloc_buffer()
110 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_alloc_buffer()
120 struct xlog *log, in xlog_align() argument
123 return BBTOB(blk_no & ((xfs_daddr_t)log->l_sectBBsize - 1)); in xlog_align()
128 struct xlog *log, in xlog_do_io() argument
136 if (XFS_IS_CORRUPT(log->l_mp, !xlog_verify_bno(log, blk_no, nbblks))) { in xlog_do_io()
137 xfs_warn(log->l_mp, in xlog_do_io()
143 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_do_io()
144 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_do_io()
147 error = xfs_rw_bdev(log->l_targ->bt_bdev, log->l_logBBstart + blk_no, in xlog_do_io()
149 if (error && !xlog_is_shutdown(log)) { in xlog_do_io()
150 xfs_alert(log->l_mp, in xlog_do_io()
160 struct xlog *log, in xlog_bread_noalign() argument
165 return xlog_do_io(log, blk_no, nbblks, data, REQ_OP_READ); in xlog_bread_noalign()
170 struct xlog *log, in xlog_bread() argument
178 error = xlog_do_io(log, blk_no, nbblks, data, REQ_OP_READ); in xlog_bread()
180 *offset = data + xlog_align(log, blk_no); in xlog_bread()
186 struct xlog *log, in xlog_bwrite() argument
191 return xlog_do_io(log, blk_no, nbblks, data, REQ_OP_WRITE); in xlog_bwrite()
277 struct xlog *log, in xlog_find_cycle_start() argument
292 error = xlog_bread(log, mid_blk, 1, buffer, &offset); in xlog_find_cycle_start()
320 struct xlog *log, in xlog_find_verify_cycle() argument
340 while (bufblks > log->l_logBBsize) in xlog_find_verify_cycle()
342 while (!(buffer = xlog_alloc_buffer(log, bufblks))) { in xlog_find_verify_cycle()
344 if (bufblks < log->l_sectBBsize) in xlog_find_verify_cycle()
353 error = xlog_bread(log, i, bcount, buffer, &buf); in xlog_find_verify_cycle()
376 xlog_logrec_hblks(struct xlog *log, struct xlog_rec_header *rh) in xlog_logrec_hblks() argument
378 if (xfs_has_logv2(log->l_mp)) { in xlog_logrec_hblks()
402 struct xlog *log, in xlog_find_verify_log_record() argument
418 buffer = xlog_alloc_buffer(log, num_blks); in xlog_find_verify_log_record()
420 buffer = xlog_alloc_buffer(log, 1); in xlog_find_verify_log_record()
425 error = xlog_bread(log, start_blk, num_blks, buffer, &offset); in xlog_find_verify_log_record()
434 xfs_warn(log->l_mp, in xlog_find_verify_log_record()
442 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_find_verify_log_record()
470 if ((error = xlog_header_check_mount(log->l_mp, head))) in xlog_find_verify_log_record()
480 xhdrs = xlog_logrec_hblks(log, head); in xlog_find_verify_log_record()
506 struct xlog *log, in xlog_find_head() argument
515 int error, log_bbnum = log->l_logBBsize; in xlog_find_head()
518 error = xlog_find_zeroed(log, &first_blk); in xlog_find_head()
520 xfs_warn(log->l_mp, "empty log check failed"); in xlog_find_head()
532 xfs_warn(log->l_mp, "totally zeroed log"); in xlog_find_head()
539 buffer = xlog_alloc_buffer(log, 1); in xlog_find_head()
543 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_head()
550 error = xlog_bread(log, last_blk, 1, buffer, &offset); in xlog_find_head()
620 error = xlog_find_cycle_start(log, buffer, first_blk, &head_blk, in xlog_find_head()
633 num_scan_bblks = min_t(int, log_bbnum, XLOG_TOTAL_REC_SHIFT(log)); in xlog_find_head()
640 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
677 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_head()
693 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
706 num_scan_bblks = XLOG_REC_SHIFT(log); in xlog_find_head()
711 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
719 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
729 error = xlog_find_verify_log_record(log, start_blk, in xlog_find_head()
757 xfs_warn(log->l_mp, "failed to find log head"); in xlog_find_head()
771 struct xlog *log, in xlog_rseek_logrec_hdr() argument
794 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_rseek_logrec_hdr()
812 for (i = log->l_logBBsize - 1; i >= (int) tail_blk; i--) { in xlog_rseek_logrec_hdr()
813 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_rseek_logrec_hdr()
845 struct xlog *log, in xlog_seek_logrec_hdr() argument
866 end_blk = head_blk > tail_blk ? head_blk : log->l_logBBsize - 1; in xlog_seek_logrec_hdr()
868 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_seek_logrec_hdr()
886 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_seek_logrec_hdr()
912 struct xlog *log, in xlog_tail_distance() argument
919 return tail_blk + (log->l_logBBsize - head_blk); in xlog_tail_distance()
943 struct xlog *log, in xlog_verify_tail() argument
956 buffer = xlog_alloc_buffer(log, 1); in xlog_verify_tail()
964 error = xlog_seek_logrec_hdr(log, head_blk, *tail_blk, 1, buffer, in xlog_verify_tail()
979 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
988 tail_distance = xlog_tail_distance(log, head_blk, first_bad); in xlog_verify_tail()
993 error = xlog_seek_logrec_hdr(log, head_blk, first_bad, 2, in xlog_verify_tail()
1000 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
1005 xfs_warn(log->l_mp, in xlog_verify_tail()
1028 struct xlog *log, in xlog_verify_head() argument
1050 tmp_buffer = xlog_alloc_buffer(log, 1); in xlog_verify_head()
1053 error = xlog_rseek_logrec_hdr(log, *head_blk, *tail_blk, in xlog_verify_head()
1065 error = xlog_do_recovery_pass(log, *head_blk, tmp_rhead_blk, in xlog_verify_head()
1073 xfs_warn(log->l_mp, in xlog_verify_head()
1085 found = xlog_rseek_logrec_hdr(log, first_bad, *tail_blk, 1, in xlog_verify_head()
1111 return xlog_verify_tail(log, *head_blk, tail_blk, in xlog_verify_head()
1125 struct xlog *log, in xlog_wrap_logbno() argument
1130 div_s64_rem(bno, log->l_logBBsize, &mod); in xlog_wrap_logbno()
1141 struct xlog *log, in xlog_check_unmount_rec() argument
1167 hblks = xlog_logrec_hblks(log, rhead); in xlog_check_unmount_rec()
1168 after_umount_blk = xlog_wrap_logbno(log, in xlog_check_unmount_rec()
1173 umount_data_blk = xlog_wrap_logbno(log, rhead_blk + hblks); in xlog_check_unmount_rec()
1174 error = xlog_bread(log, umount_data_blk, 1, buffer, &offset); in xlog_check_unmount_rec()
1185 xlog_assign_atomic_lsn(&log->l_tail_lsn, in xlog_check_unmount_rec()
1186 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1187 xlog_assign_atomic_lsn(&log->l_last_sync_lsn, in xlog_check_unmount_rec()
1188 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1200 struct xlog *log, in xlog_set_state() argument
1216 log->l_prev_block = rhead_blk; in xlog_set_state()
1217 log->l_curr_block = (int)head_blk; in xlog_set_state()
1218 log->l_curr_cycle = be32_to_cpu(rhead->h_cycle); in xlog_set_state()
1220 log->l_curr_cycle++; in xlog_set_state()
1221 atomic64_set(&log->l_tail_lsn, be64_to_cpu(rhead->h_tail_lsn)); in xlog_set_state()
1222 atomic64_set(&log->l_last_sync_lsn, be64_to_cpu(rhead->h_lsn)); in xlog_set_state()
1223 xlog_assign_grant_head(&log->l_reserve_head.grant, log->l_curr_cycle, in xlog_set_state()
1224 BBTOB(log->l_curr_block)); in xlog_set_state()
1225 xlog_assign_grant_head(&log->l_write_head.grant, log->l_curr_cycle, in xlog_set_state()
1226 BBTOB(log->l_curr_block)); in xlog_set_state()
1247 struct xlog *log, in xlog_find_tail() argument
1263 if ((error = xlog_find_head(log, head_blk))) in xlog_find_tail()
1267 buffer = xlog_alloc_buffer(log, 1); in xlog_find_tail()
1271 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_tail()
1287 error = xlog_rseek_logrec_hdr(log, *head_blk, *head_blk, 1, buffer, in xlog_find_tail()
1292 xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__); in xlog_find_tail()
1301 xlog_set_state(log, *head_blk, rhead, rhead_blk, wrapped); in xlog_find_tail()
1302 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1308 error = xlog_check_unmount_rec(log, head_blk, tail_blk, rhead, in xlog_find_tail()
1326 error = xlog_verify_head(log, head_blk, tail_blk, buffer, in xlog_find_tail()
1333 xlog_set_state(log, *head_blk, rhead, rhead_blk, in xlog_find_tail()
1335 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1336 error = xlog_check_unmount_rec(log, head_blk, tail_blk, in xlog_find_tail()
1350 set_bit(XFS_OPSTATE_CLEAN, &log->l_mp->m_opstate); in xlog_find_tail()
1371 if (!xfs_readonly_buftarg(log->l_targ)) in xlog_find_tail()
1372 error = xlog_clear_stale_blocks(log, tail_lsn); in xlog_find_tail()
1378 xfs_warn(log->l_mp, "failed to locate log tail"); in xlog_find_tail()
1400 struct xlog *log, in xlog_find_zeroed() argument
1408 int error, log_bbnum = log->l_logBBsize; in xlog_find_zeroed()
1413 buffer = xlog_alloc_buffer(log, 1); in xlog_find_zeroed()
1416 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_zeroed()
1428 error = xlog_bread(log, log_bbnum-1, 1, buffer, &offset); in xlog_find_zeroed()
1440 error = xlog_find_cycle_start(log, buffer, 0, &last_blk, 0); in xlog_find_zeroed()
1450 num_scan_bblks = XLOG_TOTAL_REC_SHIFT(log); in xlog_find_zeroed()
1463 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_zeroed()
1473 error = xlog_find_verify_log_record(log, start_blk, &last_blk, 0); in xlog_find_zeroed()
1494 struct xlog *log, in xlog_add_record() argument
1507 xfs_has_logv2(log->l_mp) ? 2 : 1); in xlog_add_record()
1511 memcpy(&recp->h_fs_uuid, &log->l_mp->m_sb.sb_uuid, sizeof(uuid_t)); in xlog_add_record()
1516 struct xlog *log, in xlog_write_log_records() argument
1526 int sectbb = log->l_sectBBsize; in xlog_write_log_records()
1539 while (bufblks > log->l_logBBsize) in xlog_write_log_records()
1541 while (!(buffer = xlog_alloc_buffer(log, bufblks))) { in xlog_write_log_records()
1553 error = xlog_bread_noalign(log, start_block, 1, buffer); in xlog_write_log_records()
1572 error = xlog_bread_noalign(log, ealign, sectbb, in xlog_write_log_records()
1579 offset = buffer + xlog_align(log, start_block); in xlog_write_log_records()
1581 xlog_add_record(log, offset, cycle, i+j, in xlog_write_log_records()
1585 error = xlog_bwrite(log, start_block, endcount, buffer); in xlog_write_log_records()
1615 struct xlog *log, in xlog_clear_stale_blocks() argument
1626 head_cycle = log->l_curr_cycle; in xlog_clear_stale_blocks()
1627 head_block = log->l_curr_block; in xlog_clear_stale_blocks()
1643 if (XFS_IS_CORRUPT(log->l_mp, in xlog_clear_stale_blocks()
1645 head_block >= log->l_logBBsize)) in xlog_clear_stale_blocks()
1647 tail_distance = tail_block + (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1654 if (XFS_IS_CORRUPT(log->l_mp, in xlog_clear_stale_blocks()
1670 max_distance = XLOG_TOTAL_REC_SHIFT(log); in xlog_clear_stale_blocks()
1680 if ((head_block + max_distance) <= log->l_logBBsize) { in xlog_clear_stale_blocks()
1688 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1701 distance = log->l_logBBsize - head_block; in xlog_clear_stale_blocks()
1702 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1717 distance = max_distance - (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1718 error = xlog_write_log_records(log, head_cycle, 0, distance, in xlog_clear_stale_blocks()
1733 struct xlog *log, in xlog_recover_release_intent() argument
1739 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_release_intent()
1869 struct xlog *log, in xlog_recover_reorder_trans() argument
1887 xfs_warn(log->l_mp, in xlog_recover_reorder_trans()
1909 trace_xfs_log_recover_item_reorder_head(log, in xlog_recover_reorder_trans()
1917 trace_xfs_log_recover_item_reorder_tail(log, in xlog_recover_reorder_trans()
1938 struct xlog *log, in xlog_buf_readahead() argument
1943 if (!xlog_is_buffer_cancelled(log, blkno, len)) in xlog_buf_readahead()
1944 xfs_buf_readahead(log->l_mp->m_ddev_targp, blkno, len, ops); in xlog_buf_readahead()
1949 struct xlog *log, in xlog_recover_items_pass2() argument
1958 trace_xfs_log_recover_item_recover(log, trans, item, in xlog_recover_items_pass2()
1962 error = item->ri_ops->commit_pass2(log, buffer_list, in xlog_recover_items_pass2()
1979 struct xlog *log, in xlog_recover_commit_trans() argument
1995 error = xlog_recover_reorder_trans(log, trans, pass); in xlog_recover_commit_trans()
2000 trace_xfs_log_recover_item_recover(log, trans, item, pass); in xlog_recover_commit_trans()
2005 error = item->ri_ops->commit_pass1(log, item); in xlog_recover_commit_trans()
2009 item->ri_ops->ra_pass2(log, item); in xlog_recover_commit_trans()
2013 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
2031 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
2055 struct xlog *log, in xlog_recover_add_to_cont_trans() argument
2071 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_cont_trans()
2095 trace_xfs_log_recover_item_add_cont(log, trans, item, 0); in xlog_recover_add_to_cont_trans()
2114 struct xlog *log, in xlog_recover_add_to_trans() argument
2128 xfs_warn(log->l_mp, "%s: bad header magic number", in xlog_recover_add_to_trans()
2135 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_trans()
2169 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
2184 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
2196 trace_xfs_log_recover_item_add(log, trans, item, 0); in xlog_recover_add_to_trans()
2232 struct xlog *log, in xlog_recovery_process_trans() argument
2256 error = xlog_recover_add_to_trans(log, trans, dp, len); in xlog_recovery_process_trans()
2259 error = xlog_recover_add_to_cont_trans(log, trans, dp, len); in xlog_recovery_process_trans()
2262 error = xlog_recover_commit_trans(log, trans, pass, in xlog_recovery_process_trans()
2271 xfs_warn(log->l_mp, "%s: Unmount LR", __func__); in xlog_recovery_process_trans()
2276 xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags); in xlog_recovery_process_trans()
2339 struct xlog *log, in xlog_recover_process_ophdr() argument
2355 xfs_warn(log->l_mp, "%s: bad clientid 0x%x", in xlog_recover_process_ophdr()
2366 xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len); in xlog_recover_process_ophdr()
2400 if (log->l_recovery_lsn != trans->r_lsn && in xlog_recover_process_ophdr()
2405 log->l_recovery_lsn = trans->r_lsn; in xlog_recover_process_ophdr()
2408 return xlog_recovery_process_trans(log, trans, dp, len, in xlog_recover_process_ophdr()
2423 struct xlog *log, in xlog_recover_process_data() argument
2439 if (xlog_header_check_recover(log->l_mp, rhead)) in xlog_recover_process_data()
2442 trace_xfs_log_recover_record(log, rhead, pass); in xlog_recover_process_data()
2450 error = xlog_recover_process_ophdr(log, rhash, rhead, ohead, in xlog_recover_process_data()
2544 struct xlog *log) in xlog_recover_process_intents() argument
2555 ailp = log->l_ailp; in xlog_recover_process_intents()
2558 last_lsn = xlog_assign_lsn(log->l_curr_cycle, log->l_curr_block); in xlog_recover_process_intents()
2597 trace_xlog_intent_recovery_failed(log->l_mp, error, in xlog_recover_process_intents()
2608 error = xlog_finish_defer_ops(log->l_mp, &capture_list); in xlog_recover_process_intents()
2614 xlog_abort_defer_ops(log->l_mp, &capture_list); in xlog_recover_process_intents()
2624 struct xlog *log) in xlog_recover_cancel_intents() argument
2630 ailp = log->l_ailp; in xlog_recover_cancel_intents()
2777 struct xlog *log) in xlog_recover_process_iunlinks() argument
2779 struct xfs_mount *mp = log->l_mp; in xlog_recover_process_iunlinks()
2834 struct xlog *log) in xlog_unpack_data() argument
2844 if (xfs_has_logv2(log->l_mp)) { in xlog_unpack_data()
2860 struct xlog *log, in xlog_recover_process() argument
2870 crc = xlog_cksum(log, rhead, dp, be32_to_cpu(rhead->h_len)); in xlog_recover_process()
2892 if (old_crc || xfs_has_crc(log->l_mp)) { in xlog_recover_process()
2893 xfs_alert(log->l_mp, in xlog_recover_process()
2904 if (xfs_has_crc(log->l_mp)) { in xlog_recover_process()
2905 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp); in xlog_recover_process()
2910 xlog_unpack_data(rhead, dp, log); in xlog_recover_process()
2912 return xlog_recover_process_data(log, rhash, rhead, dp, pass, in xlog_recover_process()
2918 struct xlog *log, in xlog_valid_rec_header() argument
2925 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2928 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2932 xfs_warn(log->l_mp, "%s: unrecognised log version (%d).", in xlog_valid_rec_header()
2942 if (XFS_IS_CORRUPT(log->l_mp, hlen <= 0 || hlen > bufsize)) in xlog_valid_rec_header()
2945 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2946 blkno > log->l_logBBsize || blkno > INT_MAX)) in xlog_valid_rec_header()
2961 struct xlog *log, in xlog_do_recovery_pass() argument
2990 if (xfs_has_logv2(log->l_mp)) { in xlog_do_recovery_pass()
2996 hbp = xlog_alloc_buffer(log, 1); in xlog_do_recovery_pass()
3000 error = xlog_bread(log, tail_blk, 1, hbp, &offset); in xlog_do_recovery_pass()
3019 if (h_len > h_size && h_len <= log->l_mp->m_logbsize && in xlog_do_recovery_pass()
3021 xfs_warn(log->l_mp, in xlog_do_recovery_pass()
3023 h_size, log->l_mp->m_logbsize); in xlog_do_recovery_pass()
3024 h_size = log->l_mp->m_logbsize; in xlog_do_recovery_pass()
3027 error = xlog_valid_rec_header(log, rhead, tail_blk, h_size); in xlog_do_recovery_pass()
3031 hblks = xlog_logrec_hblks(log, rhead); in xlog_do_recovery_pass()
3034 hbp = xlog_alloc_buffer(log, hblks); in xlog_do_recovery_pass()
3037 ASSERT(log->l_sectBBsize == 1); in xlog_do_recovery_pass()
3039 hbp = xlog_alloc_buffer(log, 1); in xlog_do_recovery_pass()
3045 dbp = xlog_alloc_buffer(log, BTOBB(h_size)); in xlog_do_recovery_pass()
3058 while (blk_no < log->l_logBBsize) { in xlog_do_recovery_pass()
3065 if (blk_no + hblks <= log->l_logBBsize) { in xlog_do_recovery_pass()
3067 error = xlog_bread(log, blk_no, hblks, hbp, in xlog_do_recovery_pass()
3073 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
3076 split_hblks = log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
3078 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
3098 error = xlog_bread_noalign(log, 0, in xlog_do_recovery_pass()
3105 error = xlog_valid_rec_header(log, rhead, in xlog_do_recovery_pass()
3120 if (blk_no + bblks <= log->l_logBBsize || in xlog_do_recovery_pass()
3121 blk_no >= log->l_logBBsize) { in xlog_do_recovery_pass()
3122 rblk_no = xlog_wrap_logbno(log, blk_no); in xlog_do_recovery_pass()
3123 error = xlog_bread(log, rblk_no, bblks, dbp, in xlog_do_recovery_pass()
3132 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
3138 log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
3140 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
3159 error = xlog_bread_noalign(log, 0, in xlog_do_recovery_pass()
3166 error = xlog_recover_process(log, rhash, rhead, offset, in xlog_do_recovery_pass()
3175 ASSERT(blk_no >= log->l_logBBsize); in xlog_do_recovery_pass()
3176 blk_no -= log->l_logBBsize; in xlog_do_recovery_pass()
3182 error = xlog_bread(log, blk_no, hblks, hbp, &offset); in xlog_do_recovery_pass()
3187 error = xlog_valid_rec_header(log, rhead, blk_no, h_size); in xlog_do_recovery_pass()
3193 error = xlog_bread(log, blk_no+hblks, bblks, dbp, in xlog_do_recovery_pass()
3198 error = xlog_recover_process(log, rhash, rhead, offset, pass, in xlog_do_recovery_pass()
3253 struct xlog *log, in xlog_do_log_recovery() argument
3265 error = xlog_alloc_buf_cancel_table(log); in xlog_do_log_recovery()
3269 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
3278 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
3281 xlog_check_buf_cancel_table(log); in xlog_do_log_recovery()
3283 xlog_free_buf_cancel_table(log); in xlog_do_log_recovery()
3292 struct xlog *log, in xlog_do_recover() argument
3296 struct xfs_mount *mp = log->l_mp; in xlog_do_recover()
3301 trace_xfs_log_recover(log, head_blk, tail_blk); in xlog_do_recover()
3306 error = xlog_do_log_recovery(log, head_blk, tail_blk); in xlog_do_recover()
3310 if (xlog_is_shutdown(log)) in xlog_do_recover()
3332 if (!xlog_is_shutdown(log)) { in xlog_do_recover()
3354 xlog_recover_check_summary(log); in xlog_do_recover()
3357 clear_bit(XLOG_ACTIVE_RECOVERY, &log->l_opstate); in xlog_do_recover()
3368 struct xlog *log) in xlog_recover() argument
3374 error = xlog_find_tail(log, &head_blk, &tail_blk); in xlog_recover()
3383 if (xfs_has_crc(log->l_mp) && in xlog_recover()
3384 !xfs_log_check_lsn(log->l_mp, log->l_mp->m_sb.sb_lsn)) in xlog_recover()
3399 if ((error = xfs_dev_is_read_only(log->l_mp, "recovery"))) { in xlog_recover()
3410 if (xfs_sb_is_v5(&log->l_mp->m_sb) && in xlog_recover()
3411 xfs_sb_has_incompat_log_feature(&log->l_mp->m_sb, in xlog_recover()
3413 xfs_warn(log->l_mp, in xlog_recover()
3415 (log->l_mp->m_sb.sb_features_log_incompat & in xlog_recover()
3417 xfs_warn(log->l_mp, in xlog_recover()
3419 xfs_warn(log->l_mp, in xlog_recover()
3430 xfs_notice(log->l_mp, in xlog_recover()
3436 xfs_notice(log->l_mp, "Starting recovery (logdev: %s)", in xlog_recover()
3437 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover()
3440 error = xlog_do_recover(log, head_blk, tail_blk); in xlog_recover()
3441 set_bit(XLOG_RECOVERY_NEEDED, &log->l_opstate); in xlog_recover()
3456 struct xlog *log) in xlog_recover_finish() argument
3460 error = xlog_recover_process_intents(log); in xlog_recover_finish()
3469 xlog_recover_cancel_intents(log); in xlog_recover_finish()
3470 xfs_alert(log->l_mp, "Failed to recover intents"); in xlog_recover_finish()
3471 xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR); in xlog_recover_finish()
3480 xfs_log_force(log->l_mp, XFS_LOG_SYNC); in xlog_recover_finish()
3488 if (xfs_clear_incompat_log_features(log->l_mp)) { in xlog_recover_finish()
3489 error = xfs_sync_sb(log->l_mp, false); in xlog_recover_finish()
3491 xfs_alert(log->l_mp, in xlog_recover_finish()
3497 xlog_recover_process_iunlinks(log); in xlog_recover_finish()
3498 xlog_recover_check_summary(log); in xlog_recover_finish()
3507 error = xfs_reflink_recover_cow(log->l_mp); in xlog_recover_finish()
3509 xfs_alert(log->l_mp, in xlog_recover_finish()
3518 xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR); in xlog_recover_finish()
3526 struct xlog *log) in xlog_recover_cancel() argument
3528 if (xlog_recovery_needed(log)) in xlog_recover_cancel()
3529 xlog_recover_cancel_intents(log); in xlog_recover_cancel()
3539 struct xlog *log) in xlog_recover_check_summary() argument
3541 struct xfs_mount *mp = log->l_mp; in xlog_recover_check_summary()
3551 mp = log->l_mp; in xlog_recover_check_summary()