Lines Matching refs:log

57 	struct xlog	*log,  in xlog_verify_bno()  argument
61 if (blk_no < 0 || blk_no >= log->l_logBBsize) in xlog_verify_bno()
63 if (bbcount <= 0 || (blk_no + bbcount) > log->l_logBBsize) in xlog_verify_bno()
74 struct xlog *log, in xlog_alloc_buffer() argument
81 if (XFS_IS_CORRUPT(log->l_mp, !xlog_verify_bno(log, 0, nbblks))) { in xlog_alloc_buffer()
82 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_alloc_buffer()
101 if (nbblks > 1 && log->l_sectBBsize > 1) in xlog_alloc_buffer()
102 nbblks += log->l_sectBBsize; in xlog_alloc_buffer()
103 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_alloc_buffer()
113 struct xlog *log, in xlog_align() argument
116 return BBTOB(blk_no & ((xfs_daddr_t)log->l_sectBBsize - 1)); in xlog_align()
121 struct xlog *log, in xlog_do_io() argument
129 if (XFS_IS_CORRUPT(log->l_mp, !xlog_verify_bno(log, blk_no, nbblks))) { in xlog_do_io()
130 xfs_warn(log->l_mp, in xlog_do_io()
136 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_do_io()
137 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_do_io()
140 error = xfs_rw_bdev(log->l_targ->bt_bdev, log->l_logBBstart + blk_no, in xlog_do_io()
142 if (error && !xlog_is_shutdown(log)) { in xlog_do_io()
143 xfs_alert(log->l_mp, in xlog_do_io()
153 struct xlog *log, in xlog_bread_noalign() argument
158 return xlog_do_io(log, blk_no, nbblks, data, REQ_OP_READ); in xlog_bread_noalign()
163 struct xlog *log, in xlog_bread() argument
171 error = xlog_do_io(log, blk_no, nbblks, data, REQ_OP_READ); in xlog_bread()
173 *offset = data + xlog_align(log, blk_no); in xlog_bread()
179 struct xlog *log, in xlog_bwrite() argument
184 return xlog_do_io(log, blk_no, nbblks, data, REQ_OP_WRITE); in xlog_bwrite()
270 struct xlog *log, in xlog_find_cycle_start() argument
285 error = xlog_bread(log, mid_blk, 1, buffer, &offset); in xlog_find_cycle_start()
313 struct xlog *log, in xlog_find_verify_cycle() argument
333 while (bufblks > log->l_logBBsize) in xlog_find_verify_cycle()
335 while (!(buffer = xlog_alloc_buffer(log, bufblks))) { in xlog_find_verify_cycle()
337 if (bufblks < log->l_sectBBsize) in xlog_find_verify_cycle()
346 error = xlog_bread(log, i, bcount, buffer, &buf); in xlog_find_verify_cycle()
369 xlog_logrec_hblks(struct xlog *log, struct xlog_rec_header *rh) in xlog_logrec_hblks() argument
371 if (xfs_has_logv2(log->l_mp)) { in xlog_logrec_hblks()
395 struct xlog *log, in xlog_find_verify_log_record() argument
411 buffer = xlog_alloc_buffer(log, num_blks); in xlog_find_verify_log_record()
413 buffer = xlog_alloc_buffer(log, 1); in xlog_find_verify_log_record()
418 error = xlog_bread(log, start_blk, num_blks, buffer, &offset); in xlog_find_verify_log_record()
427 xfs_warn(log->l_mp, in xlog_find_verify_log_record()
435 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_find_verify_log_record()
463 if ((error = xlog_header_check_mount(log->l_mp, head))) in xlog_find_verify_log_record()
473 xhdrs = xlog_logrec_hblks(log, head); in xlog_find_verify_log_record()
499 struct xlog *log, in xlog_find_head() argument
508 int error, log_bbnum = log->l_logBBsize; in xlog_find_head()
511 error = xlog_find_zeroed(log, &first_blk); in xlog_find_head()
513 xfs_warn(log->l_mp, "empty log check failed"); in xlog_find_head()
525 xfs_warn(log->l_mp, "totally zeroed log"); in xlog_find_head()
532 buffer = xlog_alloc_buffer(log, 1); in xlog_find_head()
536 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_head()
543 error = xlog_bread(log, last_blk, 1, buffer, &offset); in xlog_find_head()
613 error = xlog_find_cycle_start(log, buffer, first_blk, &head_blk, in xlog_find_head()
626 num_scan_bblks = min_t(int, log_bbnum, XLOG_TOTAL_REC_SHIFT(log)); in xlog_find_head()
633 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
670 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_head()
686 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
699 num_scan_bblks = XLOG_REC_SHIFT(log); in xlog_find_head()
704 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
712 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
722 error = xlog_find_verify_log_record(log, start_blk, in xlog_find_head()
750 xfs_warn(log->l_mp, "failed to find log head"); in xlog_find_head()
764 struct xlog *log, in xlog_rseek_logrec_hdr() argument
787 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_rseek_logrec_hdr()
805 for (i = log->l_logBBsize - 1; i >= (int) tail_blk; i--) { in xlog_rseek_logrec_hdr()
806 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_rseek_logrec_hdr()
838 struct xlog *log, in xlog_seek_logrec_hdr() argument
859 end_blk = head_blk > tail_blk ? head_blk : log->l_logBBsize - 1; in xlog_seek_logrec_hdr()
861 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_seek_logrec_hdr()
879 error = xlog_bread(log, i, 1, buffer, &offset); in xlog_seek_logrec_hdr()
905 struct xlog *log, in xlog_tail_distance() argument
912 return tail_blk + (log->l_logBBsize - head_blk); in xlog_tail_distance()
936 struct xlog *log, in xlog_verify_tail() argument
949 buffer = xlog_alloc_buffer(log, 1); in xlog_verify_tail()
957 error = xlog_seek_logrec_hdr(log, head_blk, *tail_blk, 1, buffer, in xlog_verify_tail()
972 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
981 tail_distance = xlog_tail_distance(log, head_blk, first_bad); in xlog_verify_tail()
986 error = xlog_seek_logrec_hdr(log, head_blk, first_bad, 2, in xlog_verify_tail()
993 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
998 xfs_warn(log->l_mp, in xlog_verify_tail()
1021 struct xlog *log, in xlog_verify_head() argument
1043 tmp_buffer = xlog_alloc_buffer(log, 1); in xlog_verify_head()
1046 error = xlog_rseek_logrec_hdr(log, *head_blk, *tail_blk, in xlog_verify_head()
1058 error = xlog_do_recovery_pass(log, *head_blk, tmp_rhead_blk, in xlog_verify_head()
1066 xfs_warn(log->l_mp, in xlog_verify_head()
1078 found = xlog_rseek_logrec_hdr(log, first_bad, *tail_blk, 1, in xlog_verify_head()
1104 return xlog_verify_tail(log, *head_blk, tail_blk, in xlog_verify_head()
1118 struct xlog *log, in xlog_wrap_logbno() argument
1123 div_s64_rem(bno, log->l_logBBsize, &mod); in xlog_wrap_logbno()
1134 struct xlog *log, in xlog_check_unmount_rec() argument
1160 hblks = xlog_logrec_hblks(log, rhead); in xlog_check_unmount_rec()
1161 after_umount_blk = xlog_wrap_logbno(log, in xlog_check_unmount_rec()
1166 umount_data_blk = xlog_wrap_logbno(log, rhead_blk + hblks); in xlog_check_unmount_rec()
1167 error = xlog_bread(log, umount_data_blk, 1, buffer, &offset); in xlog_check_unmount_rec()
1178 xlog_assign_atomic_lsn(&log->l_tail_lsn, in xlog_check_unmount_rec()
1179 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1180 xlog_assign_atomic_lsn(&log->l_last_sync_lsn, in xlog_check_unmount_rec()
1181 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1193 struct xlog *log, in xlog_set_state() argument
1209 log->l_prev_block = rhead_blk; in xlog_set_state()
1210 log->l_curr_block = (int)head_blk; in xlog_set_state()
1211 log->l_curr_cycle = be32_to_cpu(rhead->h_cycle); in xlog_set_state()
1213 log->l_curr_cycle++; in xlog_set_state()
1214 atomic64_set(&log->l_tail_lsn, be64_to_cpu(rhead->h_tail_lsn)); in xlog_set_state()
1215 atomic64_set(&log->l_last_sync_lsn, be64_to_cpu(rhead->h_lsn)); in xlog_set_state()
1216 xlog_assign_grant_head(&log->l_reserve_head.grant, log->l_curr_cycle, in xlog_set_state()
1217 BBTOB(log->l_curr_block)); in xlog_set_state()
1218 xlog_assign_grant_head(&log->l_write_head.grant, log->l_curr_cycle, in xlog_set_state()
1219 BBTOB(log->l_curr_block)); in xlog_set_state()
1240 struct xlog *log, in xlog_find_tail() argument
1256 if ((error = xlog_find_head(log, head_blk))) in xlog_find_tail()
1260 buffer = xlog_alloc_buffer(log, 1); in xlog_find_tail()
1264 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_tail()
1280 error = xlog_rseek_logrec_hdr(log, *head_blk, *head_blk, 1, buffer, in xlog_find_tail()
1285 xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__); in xlog_find_tail()
1294 xlog_set_state(log, *head_blk, rhead, rhead_blk, wrapped); in xlog_find_tail()
1295 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1301 error = xlog_check_unmount_rec(log, head_blk, tail_blk, rhead, in xlog_find_tail()
1319 error = xlog_verify_head(log, head_blk, tail_blk, buffer, in xlog_find_tail()
1326 xlog_set_state(log, *head_blk, rhead, rhead_blk, in xlog_find_tail()
1328 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1329 error = xlog_check_unmount_rec(log, head_blk, tail_blk, in xlog_find_tail()
1343 set_bit(XFS_OPSTATE_CLEAN, &log->l_mp->m_opstate); in xlog_find_tail()
1364 if (!xfs_readonly_buftarg(log->l_targ)) in xlog_find_tail()
1365 error = xlog_clear_stale_blocks(log, tail_lsn); in xlog_find_tail()
1371 xfs_warn(log->l_mp, "failed to locate log tail"); in xlog_find_tail()
1393 struct xlog *log, in xlog_find_zeroed() argument
1401 int error, log_bbnum = log->l_logBBsize; in xlog_find_zeroed()
1406 buffer = xlog_alloc_buffer(log, 1); in xlog_find_zeroed()
1409 error = xlog_bread(log, 0, 1, buffer, &offset); in xlog_find_zeroed()
1421 error = xlog_bread(log, log_bbnum-1, 1, buffer, &offset); in xlog_find_zeroed()
1433 error = xlog_find_cycle_start(log, buffer, 0, &last_blk, 0); in xlog_find_zeroed()
1443 num_scan_bblks = XLOG_TOTAL_REC_SHIFT(log); in xlog_find_zeroed()
1456 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_zeroed()
1466 error = xlog_find_verify_log_record(log, start_blk, &last_blk, 0); in xlog_find_zeroed()
1487 struct xlog *log, in xlog_add_record() argument
1500 xfs_has_logv2(log->l_mp) ? 2 : 1); in xlog_add_record()
1504 memcpy(&recp->h_fs_uuid, &log->l_mp->m_sb.sb_uuid, sizeof(uuid_t)); in xlog_add_record()
1509 struct xlog *log, in xlog_write_log_records() argument
1519 int sectbb = log->l_sectBBsize; in xlog_write_log_records()
1532 while (bufblks > log->l_logBBsize) in xlog_write_log_records()
1534 while (!(buffer = xlog_alloc_buffer(log, bufblks))) { in xlog_write_log_records()
1546 error = xlog_bread_noalign(log, start_block, 1, buffer); in xlog_write_log_records()
1565 error = xlog_bread_noalign(log, ealign, sectbb, in xlog_write_log_records()
1572 offset = buffer + xlog_align(log, start_block); in xlog_write_log_records()
1574 xlog_add_record(log, offset, cycle, i+j, in xlog_write_log_records()
1578 error = xlog_bwrite(log, start_block, endcount, buffer); in xlog_write_log_records()
1608 struct xlog *log, in xlog_clear_stale_blocks() argument
1619 head_cycle = log->l_curr_cycle; in xlog_clear_stale_blocks()
1620 head_block = log->l_curr_block; in xlog_clear_stale_blocks()
1636 if (XFS_IS_CORRUPT(log->l_mp, in xlog_clear_stale_blocks()
1638 head_block >= log->l_logBBsize)) in xlog_clear_stale_blocks()
1640 tail_distance = tail_block + (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1647 if (XFS_IS_CORRUPT(log->l_mp, in xlog_clear_stale_blocks()
1663 max_distance = XLOG_TOTAL_REC_SHIFT(log); in xlog_clear_stale_blocks()
1673 if ((head_block + max_distance) <= log->l_logBBsize) { in xlog_clear_stale_blocks()
1681 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1694 distance = log->l_logBBsize - head_block; in xlog_clear_stale_blocks()
1695 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1710 distance = max_distance - (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1711 error = xlog_write_log_records(log, head_cycle, 0, distance, in xlog_clear_stale_blocks()
1726 struct xlog *log, in xlog_recover_release_intent() argument
1732 list_for_each_entry_safe(dfp, n, &log->r_dfops, dfp_list) { in xlog_recover_release_intent()
1742 xfs_defer_cancel_recovery(log->l_mp, dfp); in xlog_recover_release_intent()
1858 struct xlog *log, in xlog_recover_reorder_trans() argument
1876 xfs_warn(log->l_mp, in xlog_recover_reorder_trans()
1898 trace_xfs_log_recover_item_reorder_head(log, in xlog_recover_reorder_trans()
1906 trace_xfs_log_recover_item_reorder_tail(log, in xlog_recover_reorder_trans()
1927 struct xlog *log, in xlog_buf_readahead() argument
1932 if (!xlog_is_buffer_cancelled(log, blkno, len)) in xlog_buf_readahead()
1933 xfs_buf_readahead(log->l_mp->m_ddev_targp, blkno, len, ops); in xlog_buf_readahead()
1942 struct xlog *log, in xlog_recover_intent_item() argument
1949 xfs_defer_start_recovery(lip, dfp_type, &log->r_dfops); in xlog_recover_intent_item()
1955 xfs_trans_ail_insert(log->l_ailp, lip, lsn); in xlog_recover_intent_item()
1961 struct xlog *log, in xlog_recover_items_pass2() argument
1970 trace_xfs_log_recover_item_recover(log, trans, item, in xlog_recover_items_pass2()
1974 error = item->ri_ops->commit_pass2(log, buffer_list, in xlog_recover_items_pass2()
1991 struct xlog *log, in xlog_recover_commit_trans() argument
2007 error = xlog_recover_reorder_trans(log, trans, pass); in xlog_recover_commit_trans()
2012 trace_xfs_log_recover_item_recover(log, trans, item, pass); in xlog_recover_commit_trans()
2017 error = item->ri_ops->commit_pass1(log, item); in xlog_recover_commit_trans()
2021 item->ri_ops->ra_pass2(log, item); in xlog_recover_commit_trans()
2025 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
2043 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
2067 struct xlog *log, in xlog_recover_add_to_cont_trans() argument
2083 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_cont_trans()
2107 trace_xfs_log_recover_item_add_cont(log, trans, item, 0); in xlog_recover_add_to_cont_trans()
2126 struct xlog *log, in xlog_recover_add_to_trans() argument
2140 xfs_warn(log->l_mp, "%s: bad header magic number", in xlog_recover_add_to_trans()
2147 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_trans()
2181 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
2196 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
2208 trace_xfs_log_recover_item_add(log, trans, item, 0); in xlog_recover_add_to_trans()
2244 struct xlog *log, in xlog_recovery_process_trans() argument
2268 error = xlog_recover_add_to_trans(log, trans, dp, len); in xlog_recovery_process_trans()
2271 error = xlog_recover_add_to_cont_trans(log, trans, dp, len); in xlog_recovery_process_trans()
2274 error = xlog_recover_commit_trans(log, trans, pass, in xlog_recovery_process_trans()
2283 xfs_warn(log->l_mp, "%s: Unmount LR", __func__); in xlog_recovery_process_trans()
2288 xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags); in xlog_recovery_process_trans()
2351 struct xlog *log, in xlog_recover_process_ophdr() argument
2367 xfs_warn(log->l_mp, "%s: bad clientid 0x%x", in xlog_recover_process_ophdr()
2378 xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len); in xlog_recover_process_ophdr()
2412 if (log->l_recovery_lsn != trans->r_lsn && in xlog_recover_process_ophdr()
2417 log->l_recovery_lsn = trans->r_lsn; in xlog_recover_process_ophdr()
2420 return xlog_recovery_process_trans(log, trans, dp, len, in xlog_recover_process_ophdr()
2435 struct xlog *log, in xlog_recover_process_data() argument
2451 if (xlog_header_check_recover(log->l_mp, rhead)) in xlog_recover_process_data()
2454 trace_xfs_log_recover_record(log, rhead, pass); in xlog_recover_process_data()
2462 error = xlog_recover_process_ophdr(log, rhash, rhead, ohead, in xlog_recover_process_data()
2553 struct xlog *log) in xlog_recover_process_intents() argument
2561 last_lsn = xlog_assign_lsn(log->l_curr_cycle, log->l_curr_block); in xlog_recover_process_intents()
2564 list_for_each_entry_safe(dfp, n, &log->r_dfops, dfp_list) { in xlog_recover_process_intents()
2588 trace_xlog_intent_recovery_failed(log->l_mp, error, in xlog_recover_process_intents()
2593 xfs_defer_cancel_recovery(log->l_mp, dfp); in xlog_recover_process_intents()
2598 error = xlog_finish_defer_ops(log->l_mp, &capture_list); in xlog_recover_process_intents()
2604 xlog_abort_defer_ops(log->l_mp, &capture_list); in xlog_recover_process_intents()
2615 struct xlog *log) in xlog_recover_cancel_intents() argument
2619 list_for_each_entry_safe(dfp, n, &log->r_dfops, dfp_list) { in xlog_recover_cancel_intents()
2622 xfs_defer_cancel_recovery(log->l_mp, dfp); in xlog_recover_cancel_intents()
2814 struct xlog *log) in xlog_recover_process_iunlinks() argument
2819 for_each_perag(log->l_mp, agno, pag) in xlog_recover_process_iunlinks()
2827 struct xlog *log) in xlog_unpack_data() argument
2837 if (xfs_has_logv2(log->l_mp)) { in xlog_unpack_data()
2853 struct xlog *log, in xlog_recover_process() argument
2863 crc = xlog_cksum(log, rhead, dp, be32_to_cpu(rhead->h_len)); in xlog_recover_process()
2885 if (old_crc || xfs_has_crc(log->l_mp)) { in xlog_recover_process()
2886 xfs_alert(log->l_mp, in xlog_recover_process()
2897 if (xfs_has_crc(log->l_mp)) { in xlog_recover_process()
2898 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, log->l_mp); in xlog_recover_process()
2903 xlog_unpack_data(rhead, dp, log); in xlog_recover_process()
2905 return xlog_recover_process_data(log, rhash, rhead, dp, pass, in xlog_recover_process()
2911 struct xlog *log, in xlog_valid_rec_header() argument
2918 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2921 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2925 xfs_warn(log->l_mp, "%s: unrecognised log version (%d).", in xlog_valid_rec_header()
2935 if (XFS_IS_CORRUPT(log->l_mp, hlen <= 0 || hlen > bufsize)) in xlog_valid_rec_header()
2938 if (XFS_IS_CORRUPT(log->l_mp, in xlog_valid_rec_header()
2939 blkno > log->l_logBBsize || blkno > INT_MAX)) in xlog_valid_rec_header()
2954 struct xlog *log, in xlog_do_recovery_pass() argument
2983 if (xfs_has_logv2(log->l_mp)) { in xlog_do_recovery_pass()
2989 hbp = xlog_alloc_buffer(log, 1); in xlog_do_recovery_pass()
2993 error = xlog_bread(log, tail_blk, 1, hbp, &offset); in xlog_do_recovery_pass()
3012 if (h_len > h_size && h_len <= log->l_mp->m_logbsize && in xlog_do_recovery_pass()
3014 xfs_warn(log->l_mp, in xlog_do_recovery_pass()
3016 h_size, log->l_mp->m_logbsize); in xlog_do_recovery_pass()
3017 h_size = log->l_mp->m_logbsize; in xlog_do_recovery_pass()
3020 error = xlog_valid_rec_header(log, rhead, tail_blk, h_size); in xlog_do_recovery_pass()
3024 hblks = xlog_logrec_hblks(log, rhead); in xlog_do_recovery_pass()
3027 hbp = xlog_alloc_buffer(log, hblks); in xlog_do_recovery_pass()
3030 ASSERT(log->l_sectBBsize == 1); in xlog_do_recovery_pass()
3032 hbp = xlog_alloc_buffer(log, 1); in xlog_do_recovery_pass()
3038 dbp = xlog_alloc_buffer(log, BTOBB(h_size)); in xlog_do_recovery_pass()
3051 while (blk_no < log->l_logBBsize) { in xlog_do_recovery_pass()
3058 if (blk_no + hblks <= log->l_logBBsize) { in xlog_do_recovery_pass()
3060 error = xlog_bread(log, blk_no, hblks, hbp, in xlog_do_recovery_pass()
3066 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
3069 split_hblks = log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
3071 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
3091 error = xlog_bread_noalign(log, 0, in xlog_do_recovery_pass()
3098 error = xlog_valid_rec_header(log, rhead, in xlog_do_recovery_pass()
3113 if (blk_no + bblks <= log->l_logBBsize || in xlog_do_recovery_pass()
3114 blk_no >= log->l_logBBsize) { in xlog_do_recovery_pass()
3115 rblk_no = xlog_wrap_logbno(log, blk_no); in xlog_do_recovery_pass()
3116 error = xlog_bread(log, rblk_no, bblks, dbp, in xlog_do_recovery_pass()
3125 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
3131 log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
3133 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
3152 error = xlog_bread_noalign(log, 0, in xlog_do_recovery_pass()
3159 error = xlog_recover_process(log, rhash, rhead, offset, in xlog_do_recovery_pass()
3168 ASSERT(blk_no >= log->l_logBBsize); in xlog_do_recovery_pass()
3169 blk_no -= log->l_logBBsize; in xlog_do_recovery_pass()
3175 error = xlog_bread(log, blk_no, hblks, hbp, &offset); in xlog_do_recovery_pass()
3180 error = xlog_valid_rec_header(log, rhead, blk_no, h_size); in xlog_do_recovery_pass()
3186 error = xlog_bread(log, blk_no+hblks, bblks, dbp, in xlog_do_recovery_pass()
3191 error = xlog_recover_process(log, rhash, rhead, offset, pass, in xlog_do_recovery_pass()
3224 xlog_force_shutdown(log, SHUTDOWN_LOG_IO_ERROR); in xlog_do_recovery_pass()
3263 struct xlog *log, in xlog_do_log_recovery() argument
3275 error = xlog_alloc_buf_cancel_table(log); in xlog_do_log_recovery()
3279 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
3288 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
3291 xlog_check_buf_cancel_table(log); in xlog_do_log_recovery()
3293 xlog_free_buf_cancel_table(log); in xlog_do_log_recovery()
3302 struct xlog *log, in xlog_do_recover() argument
3306 struct xfs_mount *mp = log->l_mp; in xlog_do_recover()
3311 trace_xfs_log_recover(log, head_blk, tail_blk); in xlog_do_recover()
3316 error = xlog_do_log_recovery(log, head_blk, tail_blk); in xlog_do_recover()
3320 if (xlog_is_shutdown(log)) in xlog_do_recover()
3342 if (!xlog_is_shutdown(log)) { in xlog_do_recover()
3366 clear_bit(XLOG_ACTIVE_RECOVERY, &log->l_opstate); in xlog_do_recover()
3377 struct xlog *log) in xlog_recover() argument
3383 error = xlog_find_tail(log, &head_blk, &tail_blk); in xlog_recover()
3392 if (xfs_has_crc(log->l_mp) && in xlog_recover()
3393 !xfs_log_check_lsn(log->l_mp, log->l_mp->m_sb.sb_lsn)) in xlog_recover()
3408 if ((error = xfs_dev_is_read_only(log->l_mp, "recovery"))) { in xlog_recover()
3419 if (xfs_sb_is_v5(&log->l_mp->m_sb) && in xlog_recover()
3420 xfs_sb_has_incompat_log_feature(&log->l_mp->m_sb, in xlog_recover()
3422 xfs_warn(log->l_mp, in xlog_recover()
3424 (log->l_mp->m_sb.sb_features_log_incompat & in xlog_recover()
3426 xfs_warn(log->l_mp, in xlog_recover()
3428 xfs_warn(log->l_mp, in xlog_recover()
3439 xfs_notice(log->l_mp, in xlog_recover()
3445 xfs_notice(log->l_mp, "Starting recovery (logdev: %s)", in xlog_recover()
3446 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover()
3449 error = xlog_do_recover(log, head_blk, tail_blk); in xlog_recover()
3450 set_bit(XLOG_RECOVERY_NEEDED, &log->l_opstate); in xlog_recover()
3465 struct xlog *log) in xlog_recover_finish() argument
3469 error = xlog_recover_process_intents(log); in xlog_recover_finish()
3478 xlog_recover_cancel_intents(log); in xlog_recover_finish()
3479 xfs_alert(log->l_mp, "Failed to recover intents"); in xlog_recover_finish()
3480 xlog_force_shutdown(log, SHUTDOWN_LOG_IO_ERROR); in xlog_recover_finish()
3489 xfs_log_force(log->l_mp, XFS_LOG_SYNC); in xlog_recover_finish()
3497 if (xfs_clear_incompat_log_features(log->l_mp)) { in xlog_recover_finish()
3498 error = xfs_sync_sb(log->l_mp, false); in xlog_recover_finish()
3500 xfs_alert(log->l_mp, in xlog_recover_finish()
3506 xlog_recover_process_iunlinks(log); in xlog_recover_finish()
3515 error = xfs_reflink_recover_cow(log->l_mp); in xlog_recover_finish()
3517 xfs_alert(log->l_mp, in xlog_recover_finish()
3526 xlog_force_shutdown(log, SHUTDOWN_LOG_IO_ERROR); in xlog_recover_finish()
3534 struct xlog *log) in xlog_recover_cancel() argument
3536 if (xlog_recovery_needed(log)) in xlog_recover_cancel()
3537 xlog_recover_cancel_intents(log); in xlog_recover_cancel()