Lines Matching refs:log
66 #define xlog_recover_check_summary(log) argument
95 struct xlog *log, in xlog_buf_bbcount_valid() argument
98 return bbcount > 0 && bbcount <= log->l_logBBsize; in xlog_buf_bbcount_valid()
108 struct xlog *log, in xlog_get_bp() argument
113 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_get_bp()
114 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_get_bp()
116 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_get_bp()
136 if (nbblks > 1 && log->l_sectBBsize > 1) in xlog_get_bp()
137 nbblks += log->l_sectBBsize; in xlog_get_bp()
138 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_get_bp()
140 bp = xfs_buf_get_uncached(log->l_mp->m_logdev_targp, nbblks, 0); in xlog_get_bp()
159 struct xlog *log, in xlog_align() argument
164 xfs_daddr_t offset = blk_no & ((xfs_daddr_t)log->l_sectBBsize - 1); in xlog_align()
176 struct xlog *log, in xlog_bread_noalign() argument
183 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_bread_noalign()
184 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_bread_noalign()
186 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_bread_noalign()
190 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_bread_noalign()
191 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_bread_noalign()
196 XFS_BUF_SET_ADDR(bp, log->l_logBBstart + blk_no); in xlog_bread_noalign()
202 if (error && !XFS_FORCED_SHUTDOWN(log->l_mp)) in xlog_bread_noalign()
209 struct xlog *log, in xlog_bread() argument
217 error = xlog_bread_noalign(log, blk_no, nbblks, bp); in xlog_bread()
221 *offset = xlog_align(log, blk_no, nbblks, bp); in xlog_bread()
231 struct xlog *log, in xlog_bread_offset() argument
245 error = xlog_bread_noalign(log, blk_no, nbblks, bp); in xlog_bread_offset()
261 struct xlog *log, in xlog_bwrite() argument
268 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_bwrite()
269 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_bwrite()
271 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_bwrite()
275 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_bwrite()
276 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_bwrite()
281 XFS_BUF_SET_ADDR(bp, log->l_logBBstart + blk_no); in xlog_bwrite()
408 struct xlog *log, in xlog_find_cycle_start() argument
423 error = xlog_bread(log, mid_blk, 1, bp, &offset); in xlog_find_cycle_start()
451 struct xlog *log, in xlog_find_verify_cycle() argument
471 while (bufblks > log->l_logBBsize) in xlog_find_verify_cycle()
473 while (!(bp = xlog_get_bp(log, bufblks))) { in xlog_find_verify_cycle()
475 if (bufblks < log->l_sectBBsize) in xlog_find_verify_cycle()
484 error = xlog_bread(log, i, bcount, bp, &buf); in xlog_find_verify_cycle()
520 struct xlog *log, in xlog_find_verify_log_record() argument
536 if (!(bp = xlog_get_bp(log, num_blks))) { in xlog_find_verify_log_record()
537 if (!(bp = xlog_get_bp(log, 1))) in xlog_find_verify_log_record()
541 error = xlog_bread(log, start_blk, num_blks, bp, &offset); in xlog_find_verify_log_record()
550 xfs_warn(log->l_mp, in xlog_find_verify_log_record()
558 error = xlog_bread(log, i, 1, bp, &offset); in xlog_find_verify_log_record()
586 if ((error = xlog_header_check_mount(log->l_mp, head))) in xlog_find_verify_log_record()
596 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_find_verify_log_record()
630 struct xlog *log, in xlog_find_head() argument
639 int error, log_bbnum = log->l_logBBsize; in xlog_find_head()
642 error = xlog_find_zeroed(log, &first_blk); in xlog_find_head()
644 xfs_warn(log->l_mp, "empty log check failed"); in xlog_find_head()
656 xfs_warn(log->l_mp, "totally zeroed log"); in xlog_find_head()
663 bp = xlog_get_bp(log, 1); in xlog_find_head()
667 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_head()
674 error = xlog_bread(log, last_blk, 1, bp, &offset); in xlog_find_head()
744 if ((error = xlog_find_cycle_start(log, bp, first_blk, in xlog_find_head()
756 num_scan_bblks = min_t(int, log_bbnum, XLOG_TOTAL_REC_SHIFT(log)); in xlog_find_head()
763 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
800 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_head()
816 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
829 num_scan_bblks = XLOG_REC_SHIFT(log); in xlog_find_head()
834 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
842 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
852 error = xlog_find_verify_log_record(log, start_blk, in xlog_find_head()
881 xfs_warn(log->l_mp, "failed to find log head"); in xlog_find_head()
895 struct xlog *log, in xlog_rseek_logrec_hdr() argument
918 error = xlog_bread(log, i, 1, bp, &offset); in xlog_rseek_logrec_hdr()
936 for (i = log->l_logBBsize - 1; i >= (int) tail_blk; i--) { in xlog_rseek_logrec_hdr()
937 error = xlog_bread(log, i, 1, bp, &offset); in xlog_rseek_logrec_hdr()
969 struct xlog *log, in xlog_seek_logrec_hdr() argument
990 end_blk = head_blk > tail_blk ? head_blk : log->l_logBBsize - 1; in xlog_seek_logrec_hdr()
992 error = xlog_bread(log, i, 1, bp, &offset); in xlog_seek_logrec_hdr()
1010 error = xlog_bread(log, i, 1, bp, &offset); in xlog_seek_logrec_hdr()
1036 struct xlog *log, in xlog_tail_distance() argument
1043 return tail_blk + (log->l_logBBsize - head_blk); in xlog_tail_distance()
1067 struct xlog *log, in xlog_verify_tail() argument
1080 bp = xlog_get_bp(log, 1); in xlog_verify_tail()
1088 error = xlog_seek_logrec_hdr(log, head_blk, *tail_blk, 1, bp, in xlog_verify_tail()
1103 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
1112 tail_distance = xlog_tail_distance(log, head_blk, first_bad); in xlog_verify_tail()
1117 error = xlog_seek_logrec_hdr(log, head_blk, first_bad, 2, bp, in xlog_verify_tail()
1124 error = xlog_do_recovery_pass(log, head_blk, *tail_blk, in xlog_verify_tail()
1129 xfs_warn(log->l_mp, in xlog_verify_tail()
1152 struct xlog *log, in xlog_verify_head() argument
1174 tmp_bp = xlog_get_bp(log, 1); in xlog_verify_head()
1177 error = xlog_rseek_logrec_hdr(log, *head_blk, *tail_blk, in xlog_verify_head()
1189 error = xlog_do_recovery_pass(log, *head_blk, tmp_rhead_blk, in xlog_verify_head()
1197 xfs_warn(log->l_mp, in xlog_verify_head()
1209 found = xlog_rseek_logrec_hdr(log, first_bad, *tail_blk, 1, bp, in xlog_verify_head()
1235 return xlog_verify_tail(log, *head_blk, tail_blk, in xlog_verify_head()
1246 struct xlog *log, in xlog_check_unmount_rec() argument
1272 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_check_unmount_rec()
1288 after_umount_blk = do_mod(after_umount_blk, log->l_logBBsize); in xlog_check_unmount_rec()
1292 umount_data_blk = do_mod(umount_data_blk, log->l_logBBsize); in xlog_check_unmount_rec()
1293 error = xlog_bread(log, umount_data_blk, 1, bp, &offset); in xlog_check_unmount_rec()
1304 xlog_assign_atomic_lsn(&log->l_tail_lsn, in xlog_check_unmount_rec()
1305 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1306 xlog_assign_atomic_lsn(&log->l_last_sync_lsn, in xlog_check_unmount_rec()
1307 log->l_curr_cycle, after_umount_blk); in xlog_check_unmount_rec()
1319 struct xlog *log, in xlog_set_state() argument
1335 log->l_prev_block = rhead_blk; in xlog_set_state()
1336 log->l_curr_block = (int)head_blk; in xlog_set_state()
1337 log->l_curr_cycle = be32_to_cpu(rhead->h_cycle); in xlog_set_state()
1339 log->l_curr_cycle++; in xlog_set_state()
1340 atomic64_set(&log->l_tail_lsn, be64_to_cpu(rhead->h_tail_lsn)); in xlog_set_state()
1341 atomic64_set(&log->l_last_sync_lsn, be64_to_cpu(rhead->h_lsn)); in xlog_set_state()
1342 xlog_assign_grant_head(&log->l_reserve_head.grant, log->l_curr_cycle, in xlog_set_state()
1343 BBTOB(log->l_curr_block)); in xlog_set_state()
1344 xlog_assign_grant_head(&log->l_write_head.grant, log->l_curr_cycle, in xlog_set_state()
1345 BBTOB(log->l_curr_block)); in xlog_set_state()
1366 struct xlog *log, in xlog_find_tail() argument
1382 if ((error = xlog_find_head(log, head_blk))) in xlog_find_tail()
1386 bp = xlog_get_bp(log, 1); in xlog_find_tail()
1390 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_tail()
1406 error = xlog_rseek_logrec_hdr(log, *head_blk, *head_blk, 1, bp, in xlog_find_tail()
1411 xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__); in xlog_find_tail()
1419 xlog_set_state(log, *head_blk, rhead, rhead_blk, wrapped); in xlog_find_tail()
1420 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1426 error = xlog_check_unmount_rec(log, head_blk, tail_blk, rhead, in xlog_find_tail()
1444 error = xlog_verify_head(log, head_blk, tail_blk, bp, in xlog_find_tail()
1451 xlog_set_state(log, *head_blk, rhead, rhead_blk, in xlog_find_tail()
1453 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1454 error = xlog_check_unmount_rec(log, head_blk, tail_blk, in xlog_find_tail()
1468 log->l_mp->m_flags |= XFS_MOUNT_WAS_CLEAN; in xlog_find_tail()
1489 if (!xfs_readonly_buftarg(log->l_mp->m_logdev_targp)) in xlog_find_tail()
1490 error = xlog_clear_stale_blocks(log, tail_lsn); in xlog_find_tail()
1496 xfs_warn(log->l_mp, "failed to locate log tail"); in xlog_find_tail()
1518 struct xlog *log, in xlog_find_zeroed() argument
1526 int error, log_bbnum = log->l_logBBsize; in xlog_find_zeroed()
1531 bp = xlog_get_bp(log, 1); in xlog_find_zeroed()
1534 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_zeroed()
1546 error = xlog_bread(log, log_bbnum-1, 1, bp, &offset); in xlog_find_zeroed()
1560 xfs_warn(log->l_mp, in xlog_find_zeroed()
1568 if ((error = xlog_find_cycle_start(log, bp, 0, &last_blk, 0))) in xlog_find_zeroed()
1577 num_scan_bblks = XLOG_TOTAL_REC_SHIFT(log); in xlog_find_zeroed()
1590 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_zeroed()
1600 error = xlog_find_verify_log_record(log, start_blk, &last_blk, 0); in xlog_find_zeroed()
1621 struct xlog *log, in xlog_add_record() argument
1634 xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? 2 : 1); in xlog_add_record()
1638 memcpy(&recp->h_fs_uuid, &log->l_mp->m_sb.sb_uuid, sizeof(uuid_t)); in xlog_add_record()
1643 struct xlog *log, in xlog_write_log_records() argument
1653 int sectbb = log->l_sectBBsize; in xlog_write_log_records()
1666 while (bufblks > log->l_logBBsize) in xlog_write_log_records()
1668 while (!(bp = xlog_get_bp(log, bufblks))) { in xlog_write_log_records()
1680 error = xlog_bread_noalign(log, start_block, 1, bp); in xlog_write_log_records()
1700 error = xlog_bread_offset(log, ealign, sectbb, in xlog_write_log_records()
1707 offset = xlog_align(log, start_block, endcount, bp); in xlog_write_log_records()
1709 xlog_add_record(log, offset, cycle, i+j, in xlog_write_log_records()
1713 error = xlog_bwrite(log, start_block, endcount, bp); in xlog_write_log_records()
1743 struct xlog *log, in xlog_clear_stale_blocks() argument
1754 head_cycle = log->l_curr_cycle; in xlog_clear_stale_blocks()
1755 head_block = log->l_curr_block; in xlog_clear_stale_blocks()
1771 if (unlikely(head_block < tail_block || head_block >= log->l_logBBsize)) { in xlog_clear_stale_blocks()
1773 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_clear_stale_blocks()
1776 tail_distance = tail_block + (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1785 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_clear_stale_blocks()
1800 max_distance = XLOG_TOTAL_REC_SHIFT(log); in xlog_clear_stale_blocks()
1810 if ((head_block + max_distance) <= log->l_logBBsize) { in xlog_clear_stale_blocks()
1818 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1831 distance = log->l_logBBsize - head_block; in xlog_clear_stale_blocks()
1832 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1847 distance = max_distance - (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1848 error = xlog_write_log_records(log, head_cycle, 0, distance, in xlog_clear_stale_blocks()
1915 struct xlog *log, in xlog_recover_reorder_trans() argument
1937 trace_xfs_log_recover_item_reorder_head(log, in xlog_recover_reorder_trans()
1959 trace_xfs_log_recover_item_reorder_tail(log, in xlog_recover_reorder_trans()
1964 xfs_warn(log->l_mp, in xlog_recover_reorder_trans()
2005 struct xlog *log, in xlog_recover_buffer_pass1() argument
2016 trace_xfs_log_recover_buf_not_cancel(log, buf_f); in xlog_recover_buffer_pass1()
2024 bucket = XLOG_BUF_CANCEL_BUCKET(log, buf_f->blf_blkno); in xlog_recover_buffer_pass1()
2029 trace_xfs_log_recover_buf_cancel_ref_inc(log, buf_f); in xlog_recover_buffer_pass1()
2040 trace_xfs_log_recover_buf_cancel_add(log, buf_f); in xlog_recover_buffer_pass1()
2051 struct xlog *log, in xlog_peek_buffer_cancelled() argument
2059 if (!log->l_buf_cancel_table) { in xlog_peek_buffer_cancelled()
2065 bucket = XLOG_BUF_CANCEL_BUCKET(log, blkno); in xlog_peek_buffer_cancelled()
2091 struct xlog *log, in xlog_check_buffer_cancelled() argument
2098 bcp = xlog_peek_buffer_cancelled(log, blkno, len, flags); in xlog_check_buffer_cancelled()
2727 struct xlog *log, in xlog_recover_do_dquot_buffer() argument
2734 trace_xfs_log_recover_buf_dquot_buf(log, buf_f); in xlog_recover_do_dquot_buffer()
2752 if (log->l_quotaoffs_flag & type) in xlog_recover_do_dquot_buffer()
2784 struct xlog *log, in xlog_recover_buffer_pass2() argument
2790 xfs_mount_t *mp = log->l_mp; in xlog_recover_buffer_pass2()
2800 if (xlog_check_buffer_cancelled(log, buf_f->blf_blkno, in xlog_recover_buffer_pass2()
2802 trace_xfs_log_recover_buf_cancel(log, buf_f); in xlog_recover_buffer_pass2()
2806 trace_xfs_log_recover_buf_recover(log, buf_f); in xlog_recover_buffer_pass2()
2843 trace_xfs_log_recover_buf_skip(log, buf_f); in xlog_recover_buffer_pass2()
2856 dirty = xlog_recover_do_dquot_buffer(mp, log, item, bp, buf_f); in xlog_recover_buffer_pass2()
2880 (BBTOB(bp->b_io_length) != MAX(log->l_mp->m_sb.sb_blocksize, in xlog_recover_buffer_pass2()
2881 (__uint32_t)log->l_mp->m_inode_cluster_size))) { in xlog_recover_buffer_pass2()
2973 struct xlog *log, in xlog_recover_inode_pass2() argument
2979 xfs_mount_t *mp = log->l_mp; in xlog_recover_inode_pass2()
3006 if (xlog_check_buffer_cancelled(log, in_f->ilf_blkno, in xlog_recover_inode_pass2()
3009 trace_xfs_log_recover_inode_cancel(log, in_f); in xlog_recover_inode_pass2()
3012 trace_xfs_log_recover_inode_recover(log, in_f); in xlog_recover_inode_pass2()
3063 trace_xfs_log_recover_inode_skip(log, in_f); in xlog_recover_inode_pass2()
3087 trace_xfs_log_recover_inode_skip(log, in_f); in xlog_recover_inode_pass2()
3237 xfs_warn(log->l_mp, "%s: Invalid flag", __func__); in xlog_recover_inode_pass2()
3249 xfs_dinode_calc_crc(log->l_mp, dip); in xlog_recover_inode_pass2()
3270 struct xlog *log, in xlog_recover_quotaoff_pass1() argument
3281 log->l_quotaoffs_flag |= XFS_DQ_USER; in xlog_recover_quotaoff_pass1()
3283 log->l_quotaoffs_flag |= XFS_DQ_PROJ; in xlog_recover_quotaoff_pass1()
3285 log->l_quotaoffs_flag |= XFS_DQ_GROUP; in xlog_recover_quotaoff_pass1()
3295 struct xlog *log, in xlog_recover_dquot_pass2() argument
3300 xfs_mount_t *mp = log->l_mp; in xlog_recover_dquot_pass2()
3316 xfs_alert(log->l_mp, "NULL dquot in %s.", __func__); in xlog_recover_dquot_pass2()
3320 xfs_alert(log->l_mp, "dquot too small (%d) in %s.", in xlog_recover_dquot_pass2()
3330 if (log->l_quotaoffs_flag & type) in xlog_recover_dquot_pass2()
3405 struct xlog *log, in xlog_recover_efi_pass2() argument
3410 struct xfs_mount *mp = log->l_mp; in xlog_recover_efi_pass2()
3424 spin_lock(&log->l_ailp->xa_lock); in xlog_recover_efi_pass2()
3431 xfs_trans_ail_update(log->l_ailp, &efip->efi_item, lsn); in xlog_recover_efi_pass2()
3446 struct xlog *log, in xlog_recover_efd_pass2() argument
3454 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_efd_pass2()
3501 struct xlog *log, in xlog_recover_rui_pass2() argument
3506 struct xfs_mount *mp = log->l_mp; in xlog_recover_rui_pass2()
3520 spin_lock(&log->l_ailp->xa_lock); in xlog_recover_rui_pass2()
3527 xfs_trans_ail_update(log->l_ailp, &ruip->rui_item, lsn); in xlog_recover_rui_pass2()
3542 struct xlog *log, in xlog_recover_rud_pass2() argument
3550 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_rud_pass2()
3617 struct xlog *log, in xlog_recover_cui_pass2() argument
3622 struct xfs_mount *mp = log->l_mp; in xlog_recover_cui_pass2()
3636 spin_lock(&log->l_ailp->xa_lock); in xlog_recover_cui_pass2()
3643 xfs_trans_ail_update(log->l_ailp, &cuip->cui_item, lsn); in xlog_recover_cui_pass2()
3658 struct xlog *log, in xlog_recover_cud_pass2() argument
3666 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_cud_pass2()
3734 struct xlog *log, in xlog_recover_bui_pass2() argument
3739 struct xfs_mount *mp = log->l_mp; in xlog_recover_bui_pass2()
3755 spin_lock(&log->l_ailp->xa_lock); in xlog_recover_bui_pass2()
3762 xfs_trans_ail_update(log->l_ailp, &buip->bui_item, lsn); in xlog_recover_bui_pass2()
3777 struct xlog *log, in xlog_recover_bud_pass2() argument
3785 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_bud_pass2()
3831 struct xlog *log, in xlog_recover_do_icreate_pass2() argument
3835 struct xfs_mount *mp = log->l_mp; in xlog_recover_do_icreate_pass2()
3850 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad type"); in xlog_recover_do_icreate_pass2()
3855 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad icl size"); in xlog_recover_do_icreate_pass2()
3861 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad agno"); in xlog_recover_do_icreate_pass2()
3866 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad agbno"); in xlog_recover_do_icreate_pass2()
3871 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad isize"); in xlog_recover_do_icreate_pass2()
3876 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad count"); in xlog_recover_do_icreate_pass2()
3881 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad length"); in xlog_recover_do_icreate_pass2()
3891 xfs_warn(log->l_mp, in xlog_recover_do_icreate_pass2()
3898 xfs_warn(log->l_mp, in xlog_recover_do_icreate_pass2()
3918 if (xlog_check_buffer_cancelled(log, daddr, bb_per_cluster, 0)) in xlog_recover_do_icreate_pass2()
3937 trace_xfs_log_recover_icreate_cancel(log, icl); in xlog_recover_do_icreate_pass2()
3941 trace_xfs_log_recover_icreate_recover(log, icl); in xlog_recover_do_icreate_pass2()
3948 struct xlog *log, in xlog_recover_buffer_ra_pass2() argument
3952 struct xfs_mount *mp = log->l_mp; in xlog_recover_buffer_ra_pass2()
3954 if (xlog_peek_buffer_cancelled(log, buf_f->blf_blkno, in xlog_recover_buffer_ra_pass2()
3965 struct xlog *log, in xlog_recover_inode_ra_pass2() argument
3970 struct xfs_mount *mp = log->l_mp; in xlog_recover_inode_ra_pass2()
3983 if (xlog_peek_buffer_cancelled(log, ilfp->ilf_blkno, ilfp->ilf_len, 0)) in xlog_recover_inode_ra_pass2()
3992 struct xlog *log, in xlog_recover_dquot_ra_pass2() argument
3995 struct xfs_mount *mp = log->l_mp; in xlog_recover_dquot_ra_pass2()
4013 if (log->l_quotaoffs_flag & type) in xlog_recover_dquot_ra_pass2()
4021 if (xlog_peek_buffer_cancelled(log, dq_f->qlf_blkno, len, 0)) in xlog_recover_dquot_ra_pass2()
4030 struct xlog *log, in xlog_recover_ra_pass2() argument
4035 xlog_recover_buffer_ra_pass2(log, item); in xlog_recover_ra_pass2()
4038 xlog_recover_inode_ra_pass2(log, item); in xlog_recover_ra_pass2()
4041 xlog_recover_dquot_ra_pass2(log, item); in xlog_recover_ra_pass2()
4059 struct xlog *log, in xlog_recover_commit_pass1() argument
4063 trace_xfs_log_recover_item_recover(log, trans, item, XLOG_RECOVER_PASS1); in xlog_recover_commit_pass1()
4067 return xlog_recover_buffer_pass1(log, item); in xlog_recover_commit_pass1()
4069 return xlog_recover_quotaoff_pass1(log, item); in xlog_recover_commit_pass1()
4084 xfs_warn(log->l_mp, "%s: invalid item type (%d)", in xlog_recover_commit_pass1()
4093 struct xlog *log, in xlog_recover_commit_pass2() argument
4098 trace_xfs_log_recover_item_recover(log, trans, item, XLOG_RECOVER_PASS2); in xlog_recover_commit_pass2()
4102 return xlog_recover_buffer_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
4105 return xlog_recover_inode_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
4108 return xlog_recover_efi_pass2(log, item, trans->r_lsn); in xlog_recover_commit_pass2()
4110 return xlog_recover_efd_pass2(log, item); in xlog_recover_commit_pass2()
4112 return xlog_recover_rui_pass2(log, item, trans->r_lsn); in xlog_recover_commit_pass2()
4114 return xlog_recover_rud_pass2(log, item); in xlog_recover_commit_pass2()
4116 return xlog_recover_cui_pass2(log, item, trans->r_lsn); in xlog_recover_commit_pass2()
4118 return xlog_recover_cud_pass2(log, item); in xlog_recover_commit_pass2()
4120 return xlog_recover_bui_pass2(log, item, trans->r_lsn); in xlog_recover_commit_pass2()
4122 return xlog_recover_bud_pass2(log, item); in xlog_recover_commit_pass2()
4124 return xlog_recover_dquot_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
4127 return xlog_recover_do_icreate_pass2(log, buffer_list, item); in xlog_recover_commit_pass2()
4132 xfs_warn(log->l_mp, "%s: invalid item type (%d)", in xlog_recover_commit_pass2()
4141 struct xlog *log, in xlog_recover_items_pass2() argument
4150 error = xlog_recover_commit_pass2(log, trans, in xlog_recover_items_pass2()
4167 struct xlog *log, in xlog_recover_commit_trans() argument
4183 error = xlog_recover_reorder_trans(log, trans, pass); in xlog_recover_commit_trans()
4190 error = xlog_recover_commit_pass1(log, trans, item); in xlog_recover_commit_trans()
4193 xlog_recover_ra_pass2(log, item); in xlog_recover_commit_trans()
4197 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
4215 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
4239 struct xlog *log, in xlog_recover_add_to_cont_trans() argument
4255 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_cont_trans()
4276 trace_xfs_log_recover_item_add_cont(log, trans, item, 0); in xlog_recover_add_to_cont_trans()
4295 struct xlog *log, in xlog_recover_add_to_trans() argument
4309 xfs_warn(log->l_mp, "%s: bad header magic number", in xlog_recover_add_to_trans()
4316 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_trans()
4349 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
4367 trace_xfs_log_recover_item_add(log, trans, item, 0); in xlog_recover_add_to_trans()
4403 struct xlog *log, in xlog_recovery_process_trans() argument
4427 error = xlog_recover_add_to_trans(log, trans, dp, len); in xlog_recovery_process_trans()
4430 error = xlog_recover_add_to_cont_trans(log, trans, dp, len); in xlog_recovery_process_trans()
4433 error = xlog_recover_commit_trans(log, trans, pass, in xlog_recovery_process_trans()
4442 xfs_warn(log->l_mp, "%s: Unmount LR", __func__); in xlog_recovery_process_trans()
4447 xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags); in xlog_recovery_process_trans()
4510 struct xlog *log, in xlog_recover_process_ophdr() argument
4526 xfs_warn(log->l_mp, "%s: bad clientid 0x%x", in xlog_recover_process_ophdr()
4537 xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len); in xlog_recover_process_ophdr()
4571 if (log->l_recovery_lsn != trans->r_lsn && in xlog_recover_process_ophdr()
4576 log->l_recovery_lsn = trans->r_lsn; in xlog_recover_process_ophdr()
4579 return xlog_recovery_process_trans(log, trans, dp, len, in xlog_recover_process_ophdr()
4594 struct xlog *log, in xlog_recover_process_data() argument
4610 if (xlog_header_check_recover(log->l_mp, rhead)) in xlog_recover_process_data()
4613 trace_xfs_log_recover_record(log, rhead, pass); in xlog_recover_process_data()
4621 error = xlog_recover_process_ophdr(log, rhash, rhead, ohead, in xlog_recover_process_data()
4824 struct xlog *log) in xlog_recover_process_intents() argument
4834 ailp = log->l_ailp; in xlog_recover_process_intents()
4838 last_lsn = xlog_assign_lsn(log->l_curr_cycle, log->l_curr_block); in xlog_recover_process_intents()
4862 error = xlog_recover_process_efi(log->l_mp, ailp, lip); in xlog_recover_process_intents()
4865 error = xlog_recover_process_rui(log->l_mp, ailp, lip); in xlog_recover_process_intents()
4868 error = xlog_recover_process_cui(log->l_mp, ailp, lip); in xlog_recover_process_intents()
4871 error = xlog_recover_process_bui(log->l_mp, ailp, lip); in xlog_recover_process_intents()
4890 struct xlog *log) in xlog_recover_cancel_intents() argument
4897 ailp = log->l_ailp; in xlog_recover_cancel_intents()
4915 xlog_recover_cancel_efi(log->l_mp, ailp, lip); in xlog_recover_cancel_intents()
4918 xlog_recover_cancel_rui(log->l_mp, ailp, lip); in xlog_recover_cancel_intents()
4921 xlog_recover_cancel_cui(log->l_mp, ailp, lip); in xlog_recover_cancel_intents()
4924 xlog_recover_cancel_bui(log->l_mp, ailp, lip); in xlog_recover_cancel_intents()
5050 struct xlog *log) in xlog_recover_process_iunlinks() argument
5061 mp = log->l_mp; in xlog_recover_process_iunlinks()
5112 struct xlog *log) in xlog_unpack_data() argument
5122 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_unpack_data()
5140 struct xlog *log, in xlog_recover_process() argument
5150 crc = xlog_cksum(log, rhead, dp, be32_to_cpu(rhead->h_len)); in xlog_recover_process()
5172 if (rhead->h_crc || xfs_sb_version_hascrc(&log->l_mp->m_sb)) { in xlog_recover_process()
5173 xfs_alert(log->l_mp, in xlog_recover_process()
5184 if (xfs_sb_version_hascrc(&log->l_mp->m_sb)) in xlog_recover_process()
5188 error = xlog_unpack_data(rhead, dp, log); in xlog_recover_process()
5192 return xlog_recover_process_data(log, rhash, rhead, dp, pass, in xlog_recover_process()
5198 struct xlog *log, in xlog_valid_rec_header() argument
5206 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
5212 xfs_warn(log->l_mp, "%s: unrecognised log version (%d).", in xlog_valid_rec_header()
5221 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
5224 if (unlikely( blkno > log->l_logBBsize || blkno > INT_MAX )) { in xlog_valid_rec_header()
5226 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
5242 struct xlog *log, in xlog_do_recovery_pass() argument
5271 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_do_recovery_pass()
5277 hbp = xlog_get_bp(log, 1); in xlog_do_recovery_pass()
5281 error = xlog_bread(log, tail_blk, 1, hbp, &offset); in xlog_do_recovery_pass()
5286 error = xlog_valid_rec_header(log, rhead, tail_blk); in xlog_do_recovery_pass()
5304 if (h_len <= log->l_mp->m_logbsize && in xlog_do_recovery_pass()
5306 xfs_warn(log->l_mp, in xlog_do_recovery_pass()
5308 h_size, log->l_mp->m_logbsize); in xlog_do_recovery_pass()
5309 h_size = log->l_mp->m_logbsize; in xlog_do_recovery_pass()
5320 hbp = xlog_get_bp(log, hblks); in xlog_do_recovery_pass()
5325 ASSERT(log->l_sectBBsize == 1); in xlog_do_recovery_pass()
5327 hbp = xlog_get_bp(log, 1); in xlog_do_recovery_pass()
5333 dbp = xlog_get_bp(log, BTOBB(h_size)); in xlog_do_recovery_pass()
5346 while (blk_no < log->l_logBBsize) { in xlog_do_recovery_pass()
5353 if (blk_no + hblks <= log->l_logBBsize) { in xlog_do_recovery_pass()
5355 error = xlog_bread(log, blk_no, hblks, hbp, in xlog_do_recovery_pass()
5361 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
5364 split_hblks = log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
5366 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
5386 error = xlog_bread_offset(log, 0, in xlog_do_recovery_pass()
5393 error = xlog_valid_rec_header(log, rhead, in xlog_do_recovery_pass()
5408 if (blk_no + bblks <= log->l_logBBsize || in xlog_do_recovery_pass()
5409 blk_no >= log->l_logBBsize) { in xlog_do_recovery_pass()
5412 rblk_no = do_mod(blk_no, log->l_logBBsize); in xlog_do_recovery_pass()
5413 error = xlog_bread(log, rblk_no, bblks, dbp, in xlog_do_recovery_pass()
5422 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
5428 log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
5430 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
5449 error = xlog_bread_offset(log, 0, in xlog_do_recovery_pass()
5456 error = xlog_recover_process(log, rhash, rhead, offset, in xlog_do_recovery_pass()
5465 ASSERT(blk_no >= log->l_logBBsize); in xlog_do_recovery_pass()
5466 blk_no -= log->l_logBBsize; in xlog_do_recovery_pass()
5472 error = xlog_bread(log, blk_no, hblks, hbp, &offset); in xlog_do_recovery_pass()
5477 error = xlog_valid_rec_header(log, rhead, blk_no); in xlog_do_recovery_pass()
5483 error = xlog_bread(log, blk_no+hblks, bblks, dbp, in xlog_do_recovery_pass()
5488 error = xlog_recover_process(log, rhash, rhead, offset, pass, in xlog_do_recovery_pass()
5543 struct xlog *log, in xlog_do_log_recovery() argument
5555 log->l_buf_cancel_table = kmem_zalloc(XLOG_BC_TABLE_SIZE * in xlog_do_log_recovery()
5559 INIT_LIST_HEAD(&log->l_buf_cancel_table[i]); in xlog_do_log_recovery()
5561 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
5564 kmem_free(log->l_buf_cancel_table); in xlog_do_log_recovery()
5565 log->l_buf_cancel_table = NULL; in xlog_do_log_recovery()
5572 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
5579 ASSERT(list_empty(&log->l_buf_cancel_table[i])); in xlog_do_log_recovery()
5583 kmem_free(log->l_buf_cancel_table); in xlog_do_log_recovery()
5584 log->l_buf_cancel_table = NULL; in xlog_do_log_recovery()
5594 struct xlog *log, in xlog_do_recover() argument
5598 struct xfs_mount *mp = log->l_mp; in xlog_do_recover()
5603 trace_xfs_log_recover(log, head_blk, tail_blk); in xlog_do_recover()
5608 error = xlog_do_log_recovery(log, head_blk, tail_blk); in xlog_do_recover()
5664 xlog_recover_check_summary(log); in xlog_do_recover()
5667 log->l_flags &= ~XLOG_ACTIVE_RECOVERY; in xlog_do_recover()
5678 struct xlog *log) in xlog_recover() argument
5684 error = xlog_find_tail(log, &head_blk, &tail_blk); in xlog_recover()
5693 if (xfs_sb_version_hascrc(&log->l_mp->m_sb) && in xlog_recover()
5694 !xfs_log_check_lsn(log->l_mp, log->l_mp->m_sb.sb_lsn)) in xlog_recover()
5709 if ((error = xfs_dev_is_read_only(log->l_mp, "recovery"))) { in xlog_recover()
5720 if (XFS_SB_VERSION_NUM(&log->l_mp->m_sb) == XFS_SB_VERSION_5 && in xlog_recover()
5721 xfs_sb_has_incompat_log_feature(&log->l_mp->m_sb, in xlog_recover()
5723 xfs_warn(log->l_mp, in xlog_recover()
5725 (log->l_mp->m_sb.sb_features_log_incompat & in xlog_recover()
5727 xfs_warn(log->l_mp, in xlog_recover()
5729 xfs_warn(log->l_mp, in xlog_recover()
5740 xfs_notice(log->l_mp, in xlog_recover()
5746 xfs_notice(log->l_mp, "Starting recovery (logdev: %s)", in xlog_recover()
5747 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover()
5750 error = xlog_do_recover(log, head_blk, tail_blk); in xlog_recover()
5751 log->l_flags |= XLOG_RECOVERY_NEEDED; in xlog_recover()
5767 struct xlog *log) in xlog_recover_finish() argument
5777 if (log->l_flags & XLOG_RECOVERY_NEEDED) { in xlog_recover_finish()
5779 error = xlog_recover_process_intents(log); in xlog_recover_finish()
5781 xfs_alert(log->l_mp, "Failed to recover intents"); in xlog_recover_finish()
5791 xfs_log_force(log->l_mp, XFS_LOG_SYNC); in xlog_recover_finish()
5793 xlog_recover_process_iunlinks(log); in xlog_recover_finish()
5795 xlog_recover_check_summary(log); in xlog_recover_finish()
5797 xfs_notice(log->l_mp, "Ending recovery (logdev: %s)", in xlog_recover_finish()
5798 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover_finish()
5800 log->l_flags &= ~XLOG_RECOVERY_NEEDED; in xlog_recover_finish()
5802 xfs_info(log->l_mp, "Ending clean mount"); in xlog_recover_finish()
5809 struct xlog *log) in xlog_recover_cancel() argument
5813 if (log->l_flags & XLOG_RECOVERY_NEEDED) in xlog_recover_cancel()
5814 error = xlog_recover_cancel_intents(log); in xlog_recover_cancel()
5826 struct xlog *log) in xlog_recover_check_summary() argument
5838 mp = log->l_mp; in xlog_recover_check_summary()