Lines Matching refs:log

62 #define	xlog_recover_check_summary(log)  argument
88 struct xlog *log, in xlog_buf_bbcount_valid() argument
91 return bbcount > 0 && bbcount <= log->l_logBBsize; in xlog_buf_bbcount_valid()
101 struct xlog *log, in xlog_get_bp() argument
106 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_get_bp()
107 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_get_bp()
109 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_get_bp()
129 if (nbblks > 1 && log->l_sectBBsize > 1) in xlog_get_bp()
130 nbblks += log->l_sectBBsize; in xlog_get_bp()
131 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_get_bp()
133 bp = xfs_buf_get_uncached(log->l_mp->m_logdev_targp, nbblks, 0); in xlog_get_bp()
152 struct xlog *log, in xlog_align() argument
157 xfs_daddr_t offset = blk_no & ((xfs_daddr_t)log->l_sectBBsize - 1); in xlog_align()
169 struct xlog *log, in xlog_bread_noalign() argument
176 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_bread_noalign()
177 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_bread_noalign()
179 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_bread_noalign()
183 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_bread_noalign()
184 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_bread_noalign()
189 XFS_BUF_SET_ADDR(bp, log->l_logBBstart + blk_no); in xlog_bread_noalign()
195 if (error && !XFS_FORCED_SHUTDOWN(log->l_mp)) in xlog_bread_noalign()
202 struct xlog *log, in xlog_bread() argument
210 error = xlog_bread_noalign(log, blk_no, nbblks, bp); in xlog_bread()
214 *offset = xlog_align(log, blk_no, nbblks, bp); in xlog_bread()
224 struct xlog *log, in xlog_bread_offset() argument
238 error = xlog_bread_noalign(log, blk_no, nbblks, bp); in xlog_bread_offset()
254 struct xlog *log, in xlog_bwrite() argument
261 if (!xlog_buf_bbcount_valid(log, nbblks)) { in xlog_bwrite()
262 xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer", in xlog_bwrite()
264 XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_HIGH, log->l_mp); in xlog_bwrite()
268 blk_no = round_down(blk_no, log->l_sectBBsize); in xlog_bwrite()
269 nbblks = round_up(nbblks, log->l_sectBBsize); in xlog_bwrite()
274 XFS_BUF_SET_ADDR(bp, log->l_logBBstart + blk_no); in xlog_bwrite()
393 struct xlog *log, in xlog_find_cycle_start() argument
408 error = xlog_bread(log, mid_blk, 1, bp, &offset); in xlog_find_cycle_start()
436 struct xlog *log, in xlog_find_verify_cycle() argument
456 while (bufblks > log->l_logBBsize) in xlog_find_verify_cycle()
458 while (!(bp = xlog_get_bp(log, bufblks))) { in xlog_find_verify_cycle()
460 if (bufblks < log->l_sectBBsize) in xlog_find_verify_cycle()
469 error = xlog_bread(log, i, bcount, bp, &buf); in xlog_find_verify_cycle()
505 struct xlog *log, in xlog_find_verify_log_record() argument
521 if (!(bp = xlog_get_bp(log, num_blks))) { in xlog_find_verify_log_record()
522 if (!(bp = xlog_get_bp(log, 1))) in xlog_find_verify_log_record()
526 error = xlog_bread(log, start_blk, num_blks, bp, &offset); in xlog_find_verify_log_record()
535 xfs_warn(log->l_mp, in xlog_find_verify_log_record()
543 error = xlog_bread(log, i, 1, bp, &offset); in xlog_find_verify_log_record()
571 if ((error = xlog_header_check_mount(log->l_mp, head))) in xlog_find_verify_log_record()
581 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_find_verify_log_record()
615 struct xlog *log, in xlog_find_head() argument
624 int error, log_bbnum = log->l_logBBsize; in xlog_find_head()
627 error = xlog_find_zeroed(log, &first_blk); in xlog_find_head()
629 xfs_warn(log->l_mp, "empty log check failed"); in xlog_find_head()
641 xfs_warn(log->l_mp, "totally zeroed log"); in xlog_find_head()
648 bp = xlog_get_bp(log, 1); in xlog_find_head()
652 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_head()
659 error = xlog_bread(log, last_blk, 1, bp, &offset); in xlog_find_head()
729 if ((error = xlog_find_cycle_start(log, bp, first_blk, in xlog_find_head()
741 num_scan_bblks = XLOG_TOTAL_REC_SHIFT(log); in xlog_find_head()
748 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
785 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_head()
801 if ((error = xlog_find_verify_cycle(log, in xlog_find_head()
814 num_scan_bblks = XLOG_REC_SHIFT(log); in xlog_find_head()
819 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
827 error = xlog_find_verify_log_record(log, start_blk, &head_blk, 0); in xlog_find_head()
837 error = xlog_find_verify_log_record(log, start_blk, in xlog_find_head()
866 xfs_warn(log->l_mp, "failed to find log head"); in xlog_find_head()
888 struct xlog *log, in xlog_find_tail() argument
907 if ((error = xlog_find_head(log, head_blk))) in xlog_find_tail()
910 bp = xlog_get_bp(log, 1); in xlog_find_tail()
914 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_tail()
930 error = xlog_bread(log, i, 1, bp, &offset); in xlog_find_tail()
946 for (i = log->l_logBBsize - 1; i >= (int)(*head_blk); i--) { in xlog_find_tail()
947 error = xlog_bread(log, i, 1, bp, &offset); in xlog_find_tail()
959 xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__); in xlog_find_tail()
979 log->l_prev_block = i; in xlog_find_tail()
980 log->l_curr_block = (int)*head_blk; in xlog_find_tail()
981 log->l_curr_cycle = be32_to_cpu(rhead->h_cycle); in xlog_find_tail()
983 log->l_curr_cycle++; in xlog_find_tail()
984 atomic64_set(&log->l_tail_lsn, be64_to_cpu(rhead->h_tail_lsn)); in xlog_find_tail()
985 atomic64_set(&log->l_last_sync_lsn, be64_to_cpu(rhead->h_lsn)); in xlog_find_tail()
986 xlog_assign_grant_head(&log->l_reserve_head.grant, log->l_curr_cycle, in xlog_find_tail()
987 BBTOB(log->l_curr_block)); in xlog_find_tail()
988 xlog_assign_grant_head(&log->l_write_head.grant, log->l_curr_cycle, in xlog_find_tail()
989 BBTOB(log->l_curr_block)); in xlog_find_tail()
1002 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_find_tail()
1018 BTOBB(be32_to_cpu(rhead->h_len))) % log->l_logBBsize; in xlog_find_tail()
1019 tail_lsn = atomic64_read(&log->l_tail_lsn); in xlog_find_tail()
1022 umount_data_blk = (i + hblks) % log->l_logBBsize; in xlog_find_tail()
1023 error = xlog_bread(log, umount_data_blk, 1, bp, &offset); in xlog_find_tail()
1034 xlog_assign_atomic_lsn(&log->l_tail_lsn, in xlog_find_tail()
1035 log->l_curr_cycle, after_umount_blk); in xlog_find_tail()
1036 xlog_assign_atomic_lsn(&log->l_last_sync_lsn, in xlog_find_tail()
1037 log->l_curr_cycle, after_umount_blk); in xlog_find_tail()
1046 log->l_mp->m_flags |= XFS_MOUNT_WAS_CLEAN; in xlog_find_tail()
1069 if (!xfs_readonly_buftarg(log->l_mp->m_logdev_targp)) in xlog_find_tail()
1070 error = xlog_clear_stale_blocks(log, tail_lsn); in xlog_find_tail()
1076 xfs_warn(log->l_mp, "failed to locate log tail"); in xlog_find_tail()
1098 struct xlog *log, in xlog_find_zeroed() argument
1106 int error, log_bbnum = log->l_logBBsize; in xlog_find_zeroed()
1111 bp = xlog_get_bp(log, 1); in xlog_find_zeroed()
1114 error = xlog_bread(log, 0, 1, bp, &offset); in xlog_find_zeroed()
1126 error = xlog_bread(log, log_bbnum-1, 1, bp, &offset); in xlog_find_zeroed()
1140 xfs_warn(log->l_mp, in xlog_find_zeroed()
1148 if ((error = xlog_find_cycle_start(log, bp, 0, &last_blk, 0))) in xlog_find_zeroed()
1157 num_scan_bblks = XLOG_TOTAL_REC_SHIFT(log); in xlog_find_zeroed()
1170 if ((error = xlog_find_verify_cycle(log, start_blk, in xlog_find_zeroed()
1180 error = xlog_find_verify_log_record(log, start_blk, &last_blk, 0); in xlog_find_zeroed()
1201 struct xlog *log, in xlog_add_record() argument
1214 xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? 2 : 1); in xlog_add_record()
1218 memcpy(&recp->h_fs_uuid, &log->l_mp->m_sb.sb_uuid, sizeof(uuid_t)); in xlog_add_record()
1223 struct xlog *log, in xlog_write_log_records() argument
1233 int sectbb = log->l_sectBBsize; in xlog_write_log_records()
1246 while (bufblks > log->l_logBBsize) in xlog_write_log_records()
1248 while (!(bp = xlog_get_bp(log, bufblks))) { in xlog_write_log_records()
1260 error = xlog_bread_noalign(log, start_block, 1, bp); in xlog_write_log_records()
1280 error = xlog_bread_offset(log, ealign, sectbb, in xlog_write_log_records()
1287 offset = xlog_align(log, start_block, endcount, bp); in xlog_write_log_records()
1289 xlog_add_record(log, offset, cycle, i+j, in xlog_write_log_records()
1293 error = xlog_bwrite(log, start_block, endcount, bp); in xlog_write_log_records()
1323 struct xlog *log, in xlog_clear_stale_blocks() argument
1334 head_cycle = log->l_curr_cycle; in xlog_clear_stale_blocks()
1335 head_block = log->l_curr_block; in xlog_clear_stale_blocks()
1351 if (unlikely(head_block < tail_block || head_block >= log->l_logBBsize)) { in xlog_clear_stale_blocks()
1353 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_clear_stale_blocks()
1356 tail_distance = tail_block + (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1365 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_clear_stale_blocks()
1380 max_distance = XLOG_TOTAL_REC_SHIFT(log); in xlog_clear_stale_blocks()
1390 if ((head_block + max_distance) <= log->l_logBBsize) { in xlog_clear_stale_blocks()
1398 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1411 distance = log->l_logBBsize - head_block; in xlog_clear_stale_blocks()
1412 error = xlog_write_log_records(log, (head_cycle - 1), in xlog_clear_stale_blocks()
1427 distance = max_distance - (log->l_logBBsize - head_block); in xlog_clear_stale_blocks()
1428 error = xlog_write_log_records(log, head_cycle, 0, distance, in xlog_clear_stale_blocks()
1495 struct xlog *log, in xlog_recover_reorder_trans() argument
1517 trace_xfs_log_recover_item_reorder_head(log, in xlog_recover_reorder_trans()
1533 trace_xfs_log_recover_item_reorder_tail(log, in xlog_recover_reorder_trans()
1538 xfs_warn(log->l_mp, in xlog_recover_reorder_trans()
1579 struct xlog *log, in xlog_recover_buffer_pass1() argument
1590 trace_xfs_log_recover_buf_not_cancel(log, buf_f); in xlog_recover_buffer_pass1()
1598 bucket = XLOG_BUF_CANCEL_BUCKET(log, buf_f->blf_blkno); in xlog_recover_buffer_pass1()
1603 trace_xfs_log_recover_buf_cancel_ref_inc(log, buf_f); in xlog_recover_buffer_pass1()
1614 trace_xfs_log_recover_buf_cancel_add(log, buf_f); in xlog_recover_buffer_pass1()
1625 struct xlog *log, in xlog_peek_buffer_cancelled() argument
1633 if (!log->l_buf_cancel_table) { in xlog_peek_buffer_cancelled()
1639 bucket = XLOG_BUF_CANCEL_BUCKET(log, blkno); in xlog_peek_buffer_cancelled()
1665 struct xlog *log, in xlog_check_buffer_cancelled() argument
1672 bcp = xlog_peek_buffer_cancelled(log, blkno, len, flags); in xlog_check_buffer_cancelled()
2265 struct xlog *log, in xlog_recover_do_dquot_buffer() argument
2272 trace_xfs_log_recover_buf_dquot_buf(log, buf_f); in xlog_recover_do_dquot_buffer()
2290 if (log->l_quotaoffs_flag & type) in xlog_recover_do_dquot_buffer()
2322 struct xlog *log, in xlog_recover_buffer_pass2() argument
2328 xfs_mount_t *mp = log->l_mp; in xlog_recover_buffer_pass2()
2338 if (xlog_check_buffer_cancelled(log, buf_f->blf_blkno, in xlog_recover_buffer_pass2()
2340 trace_xfs_log_recover_buf_cancel(log, buf_f); in xlog_recover_buffer_pass2()
2344 trace_xfs_log_recover_buf_recover(log, buf_f); in xlog_recover_buffer_pass2()
2393 dirty = xlog_recover_do_dquot_buffer(mp, log, item, bp, buf_f); in xlog_recover_buffer_pass2()
2417 (BBTOB(bp->b_io_length) != MAX(log->l_mp->m_sb.sb_blocksize, in xlog_recover_buffer_pass2()
2418 (__uint32_t)log->l_mp->m_inode_cluster_size))) { in xlog_recover_buffer_pass2()
2510 struct xlog *log, in xlog_recover_inode_pass2() argument
2516 xfs_mount_t *mp = log->l_mp; in xlog_recover_inode_pass2()
2543 if (xlog_check_buffer_cancelled(log, in_f->ilf_blkno, in xlog_recover_inode_pass2()
2546 trace_xfs_log_recover_inode_cancel(log, in_f); in xlog_recover_inode_pass2()
2549 trace_xfs_log_recover_inode_recover(log, in_f); in xlog_recover_inode_pass2()
2600 trace_xfs_log_recover_inode_skip(log, in_f); in xlog_recover_inode_pass2()
2624 trace_xfs_log_recover_inode_skip(log, in_f); in xlog_recover_inode_pass2()
2774 xfs_warn(log->l_mp, "%s: Invalid flag", __func__); in xlog_recover_inode_pass2()
2786 xfs_dinode_calc_crc(log->l_mp, dip); in xlog_recover_inode_pass2()
2807 struct xlog *log, in xlog_recover_quotaoff_pass1() argument
2818 log->l_quotaoffs_flag |= XFS_DQ_USER; in xlog_recover_quotaoff_pass1()
2820 log->l_quotaoffs_flag |= XFS_DQ_PROJ; in xlog_recover_quotaoff_pass1()
2822 log->l_quotaoffs_flag |= XFS_DQ_GROUP; in xlog_recover_quotaoff_pass1()
2832 struct xlog *log, in xlog_recover_dquot_pass2() argument
2837 xfs_mount_t *mp = log->l_mp; in xlog_recover_dquot_pass2()
2853 xfs_alert(log->l_mp, "NULL dquot in %s.", __func__); in xlog_recover_dquot_pass2()
2857 xfs_alert(log->l_mp, "dquot too small (%d) in %s.", in xlog_recover_dquot_pass2()
2867 if (log->l_quotaoffs_flag & type) in xlog_recover_dquot_pass2()
2942 struct xlog *log, in xlog_recover_efi_pass2() argument
2947 struct xfs_mount *mp = log->l_mp; in xlog_recover_efi_pass2()
2961 spin_lock(&log->l_ailp->xa_lock); in xlog_recover_efi_pass2()
2968 xfs_trans_ail_update(log->l_ailp, &efip->efi_item, lsn); in xlog_recover_efi_pass2()
2983 struct xlog *log, in xlog_recover_efd_pass2() argument
2991 struct xfs_ail *ailp = log->l_ailp; in xlog_recover_efd_pass2()
3039 struct xlog *log, in xlog_recover_do_icreate_pass2() argument
3043 struct xfs_mount *mp = log->l_mp; in xlog_recover_do_icreate_pass2()
3058 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad type"); in xlog_recover_do_icreate_pass2()
3063 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad icl size"); in xlog_recover_do_icreate_pass2()
3069 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad agno"); in xlog_recover_do_icreate_pass2()
3074 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad agbno"); in xlog_recover_do_icreate_pass2()
3079 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad isize"); in xlog_recover_do_icreate_pass2()
3084 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad count"); in xlog_recover_do_icreate_pass2()
3089 xfs_warn(log->l_mp, "xlog_recover_do_icreate_trans: bad length"); in xlog_recover_do_icreate_pass2()
3099 xfs_warn(log->l_mp, in xlog_recover_do_icreate_pass2()
3106 xfs_warn(log->l_mp, in xlog_recover_do_icreate_pass2()
3126 if (xlog_check_buffer_cancelled(log, daddr, bb_per_cluster, 0)) in xlog_recover_do_icreate_pass2()
3145 trace_xfs_log_recover_icreate_cancel(log, icl); in xlog_recover_do_icreate_pass2()
3149 trace_xfs_log_recover_icreate_recover(log, icl); in xlog_recover_do_icreate_pass2()
3156 struct xlog *log, in xlog_recover_buffer_ra_pass2() argument
3160 struct xfs_mount *mp = log->l_mp; in xlog_recover_buffer_ra_pass2()
3162 if (xlog_peek_buffer_cancelled(log, buf_f->blf_blkno, in xlog_recover_buffer_ra_pass2()
3173 struct xlog *log, in xlog_recover_inode_ra_pass2() argument
3178 struct xfs_mount *mp = log->l_mp; in xlog_recover_inode_ra_pass2()
3191 if (xlog_peek_buffer_cancelled(log, ilfp->ilf_blkno, ilfp->ilf_len, 0)) in xlog_recover_inode_ra_pass2()
3200 struct xlog *log, in xlog_recover_dquot_ra_pass2() argument
3203 struct xfs_mount *mp = log->l_mp; in xlog_recover_dquot_ra_pass2()
3221 if (log->l_quotaoffs_flag & type) in xlog_recover_dquot_ra_pass2()
3229 if (xlog_peek_buffer_cancelled(log, dq_f->qlf_blkno, len, 0)) in xlog_recover_dquot_ra_pass2()
3238 struct xlog *log, in xlog_recover_ra_pass2() argument
3243 xlog_recover_buffer_ra_pass2(log, item); in xlog_recover_ra_pass2()
3246 xlog_recover_inode_ra_pass2(log, item); in xlog_recover_ra_pass2()
3249 xlog_recover_dquot_ra_pass2(log, item); in xlog_recover_ra_pass2()
3261 struct xlog *log, in xlog_recover_commit_pass1() argument
3265 trace_xfs_log_recover_item_recover(log, trans, item, XLOG_RECOVER_PASS1); in xlog_recover_commit_pass1()
3269 return xlog_recover_buffer_pass1(log, item); in xlog_recover_commit_pass1()
3271 return xlog_recover_quotaoff_pass1(log, item); in xlog_recover_commit_pass1()
3280 xfs_warn(log->l_mp, "%s: invalid item type (%d)", in xlog_recover_commit_pass1()
3289 struct xlog *log, in xlog_recover_commit_pass2() argument
3294 trace_xfs_log_recover_item_recover(log, trans, item, XLOG_RECOVER_PASS2); in xlog_recover_commit_pass2()
3298 return xlog_recover_buffer_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
3301 return xlog_recover_inode_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
3304 return xlog_recover_efi_pass2(log, item, trans->r_lsn); in xlog_recover_commit_pass2()
3306 return xlog_recover_efd_pass2(log, item); in xlog_recover_commit_pass2()
3308 return xlog_recover_dquot_pass2(log, buffer_list, item, in xlog_recover_commit_pass2()
3311 return xlog_recover_do_icreate_pass2(log, buffer_list, item); in xlog_recover_commit_pass2()
3316 xfs_warn(log->l_mp, "%s: invalid item type (%d)", in xlog_recover_commit_pass2()
3325 struct xlog *log, in xlog_recover_items_pass2() argument
3334 error = xlog_recover_commit_pass2(log, trans, in xlog_recover_items_pass2()
3351 struct xlog *log, in xlog_recover_commit_trans() argument
3368 error = xlog_recover_reorder_trans(log, trans, pass); in xlog_recover_commit_trans()
3375 error = xlog_recover_commit_pass1(log, trans, item); in xlog_recover_commit_trans()
3378 xlog_recover_ra_pass2(log, item); in xlog_recover_commit_trans()
3382 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
3400 error = xlog_recover_items_pass2(log, trans, in xlog_recover_commit_trans()
3425 struct xlog *log, in xlog_recover_add_to_cont_trans() argument
3441 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_cont_trans()
3462 trace_xfs_log_recover_item_add_cont(log, trans, item, 0); in xlog_recover_add_to_cont_trans()
3481 struct xlog *log, in xlog_recover_add_to_trans() argument
3495 xfs_warn(log->l_mp, "%s: bad header magic number", in xlog_recover_add_to_trans()
3502 xfs_warn(log->l_mp, "%s: bad header length", __func__); in xlog_recover_add_to_trans()
3535 xfs_warn(log->l_mp, in xlog_recover_add_to_trans()
3553 trace_xfs_log_recover_item_add(log, trans, item, 0); in xlog_recover_add_to_trans()
3587 struct xlog *log, in xlog_recovery_process_trans() argument
3610 error = xlog_recover_add_to_trans(log, trans, dp, len); in xlog_recovery_process_trans()
3613 error = xlog_recover_add_to_cont_trans(log, trans, dp, len); in xlog_recovery_process_trans()
3616 error = xlog_recover_commit_trans(log, trans, pass); in xlog_recovery_process_trans()
3624 xfs_warn(log->l_mp, "%s: Unmount LR", __func__); in xlog_recovery_process_trans()
3629 xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags); in xlog_recovery_process_trans()
3692 struct xlog *log, in xlog_recover_process_ophdr() argument
3706 xfs_warn(log->l_mp, "%s: bad clientid 0x%x", in xlog_recover_process_ophdr()
3717 xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len); in xlog_recover_process_ophdr()
3728 return xlog_recovery_process_trans(log, trans, dp, len, in xlog_recover_process_ophdr()
3743 struct xlog *log, in xlog_recover_process_data() argument
3758 if (xlog_header_check_recover(log->l_mp, rhead)) in xlog_recover_process_data()
3768 error = xlog_recover_process_ophdr(log, rhash, rhead, ohead, in xlog_recover_process_data()
3864 struct xlog *log) in xlog_recover_process_efis() argument
3872 ailp = log->l_ailp; in xlog_recover_process_efis()
3898 error = xlog_recover_process_efi(log->l_mp, efip); in xlog_recover_process_efis()
3916 struct xlog *log) in xlog_recover_cancel_efis() argument
3924 ailp = log->l_ailp; in xlog_recover_cancel_efis()
4068 struct xlog *log) in xlog_recover_process_iunlinks() argument
4079 mp = log->l_mp; in xlog_recover_process_iunlinks()
4140 struct xlog *log) in xlog_unpack_data_crc() argument
4144 crc = xlog_cksum(log, rhead, dp, be32_to_cpu(rhead->h_len)); in xlog_unpack_data_crc()
4146 if (rhead->h_crc || xfs_sb_version_hascrc(&log->l_mp->m_sb)) { in xlog_unpack_data_crc()
4147 xfs_alert(log->l_mp, in xlog_unpack_data_crc()
4159 if (xfs_sb_version_hascrc(&log->l_mp->m_sb)) in xlog_unpack_data_crc()
4170 struct xlog *log) in xlog_unpack_data() argument
4175 error = xlog_unpack_data_crc(rhead, dp, log); in xlog_unpack_data()
4185 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_unpack_data()
4200 struct xlog *log, in xlog_valid_rec_header() argument
4208 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
4214 xfs_warn(log->l_mp, "%s: unrecognised log version (%d).", in xlog_valid_rec_header()
4223 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
4226 if (unlikely( blkno > log->l_logBBsize || blkno > INT_MAX )) { in xlog_valid_rec_header()
4228 XFS_ERRLEVEL_LOW, log->l_mp); in xlog_valid_rec_header()
4244 struct xlog *log, in xlog_do_recovery_pass() argument
4264 if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { in xlog_do_recovery_pass()
4270 hbp = xlog_get_bp(log, 1); in xlog_do_recovery_pass()
4274 error = xlog_bread(log, tail_blk, 1, hbp, &offset); in xlog_do_recovery_pass()
4279 error = xlog_valid_rec_header(log, rhead, tail_blk); in xlog_do_recovery_pass()
4289 hbp = xlog_get_bp(log, hblks); in xlog_do_recovery_pass()
4294 ASSERT(log->l_sectBBsize == 1); in xlog_do_recovery_pass()
4296 hbp = xlog_get_bp(log, 1); in xlog_do_recovery_pass()
4302 dbp = xlog_get_bp(log, BTOBB(h_size)); in xlog_do_recovery_pass()
4316 while (blk_no < log->l_logBBsize) { in xlog_do_recovery_pass()
4323 if (blk_no + hblks <= log->l_logBBsize) { in xlog_do_recovery_pass()
4325 error = xlog_bread(log, blk_no, hblks, hbp, in xlog_do_recovery_pass()
4331 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
4334 split_hblks = log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
4336 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
4356 error = xlog_bread_offset(log, 0, in xlog_do_recovery_pass()
4363 error = xlog_valid_rec_header(log, rhead, in xlog_do_recovery_pass()
4372 if (blk_no + bblks <= log->l_logBBsize) { in xlog_do_recovery_pass()
4373 error = xlog_bread(log, blk_no, bblks, dbp, in xlog_do_recovery_pass()
4382 if (blk_no != log->l_logBBsize) { in xlog_do_recovery_pass()
4388 log->l_logBBsize - (int)blk_no; in xlog_do_recovery_pass()
4390 error = xlog_bread(log, blk_no, in xlog_do_recovery_pass()
4409 error = xlog_bread_offset(log, 0, in xlog_do_recovery_pass()
4416 error = xlog_unpack_data(rhead, offset, log); in xlog_do_recovery_pass()
4420 error = xlog_recover_process_data(log, rhash, in xlog_do_recovery_pass()
4427 ASSERT(blk_no >= log->l_logBBsize); in xlog_do_recovery_pass()
4428 blk_no -= log->l_logBBsize; in xlog_do_recovery_pass()
4433 error = xlog_bread(log, blk_no, hblks, hbp, &offset); in xlog_do_recovery_pass()
4438 error = xlog_valid_rec_header(log, rhead, blk_no); in xlog_do_recovery_pass()
4444 error = xlog_bread(log, blk_no+hblks, bblks, dbp, in xlog_do_recovery_pass()
4449 error = xlog_unpack_data(rhead, offset, log); in xlog_do_recovery_pass()
4453 error = xlog_recover_process_data(log, rhash, in xlog_do_recovery_pass()
4482 struct xlog *log, in xlog_do_log_recovery() argument
4494 log->l_buf_cancel_table = kmem_zalloc(XLOG_BC_TABLE_SIZE * in xlog_do_log_recovery()
4498 INIT_LIST_HEAD(&log->l_buf_cancel_table[i]); in xlog_do_log_recovery()
4500 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
4503 kmem_free(log->l_buf_cancel_table); in xlog_do_log_recovery()
4504 log->l_buf_cancel_table = NULL; in xlog_do_log_recovery()
4511 error = xlog_do_recovery_pass(log, head_blk, tail_blk, in xlog_do_log_recovery()
4518 ASSERT(list_empty(&log->l_buf_cancel_table[i])); in xlog_do_log_recovery()
4522 kmem_free(log->l_buf_cancel_table); in xlog_do_log_recovery()
4523 log->l_buf_cancel_table = NULL; in xlog_do_log_recovery()
4533 struct xlog *log, in xlog_do_recover() argument
4544 error = xlog_do_log_recovery(log, head_blk, tail_blk); in xlog_do_recover()
4551 if (XFS_FORCED_SHUTDOWN(log->l_mp)) { in xlog_do_recover()
4564 xlog_assign_tail_lsn(log->l_mp); in xlog_do_recover()
4570 bp = xfs_getsb(log->l_mp, 0); in xlog_do_recover()
4579 if (!XFS_FORCED_SHUTDOWN(log->l_mp)) { in xlog_do_recover()
4588 sbp = &log->l_mp->m_sb; in xlog_do_recover()
4592 xfs_reinit_percpu_counters(log->l_mp); in xlog_do_recover()
4597 xlog_recover_check_summary(log); in xlog_do_recover()
4600 log->l_flags &= ~XLOG_ACTIVE_RECOVERY; in xlog_do_recover()
4611 struct xlog *log) in xlog_recover() argument
4617 error = xlog_find_tail(log, &head_blk, &tail_blk); in xlog_recover()
4626 if (xfs_sb_version_hascrc(&log->l_mp->m_sb) && in xlog_recover()
4627 !xfs_log_check_lsn(log->l_mp, log->l_mp->m_sb.sb_lsn)) in xlog_recover()
4642 if ((error = xfs_dev_is_read_only(log->l_mp, "recovery"))) { in xlog_recover()
4653 if (XFS_SB_VERSION_NUM(&log->l_mp->m_sb) == XFS_SB_VERSION_5 && in xlog_recover()
4654 xfs_sb_has_incompat_log_feature(&log->l_mp->m_sb, in xlog_recover()
4656 xfs_warn(log->l_mp, in xlog_recover()
4658 (log->l_mp->m_sb.sb_features_log_incompat & in xlog_recover()
4660 xfs_warn(log->l_mp, in xlog_recover()
4662 xfs_warn(log->l_mp, in xlog_recover()
4673 xfs_notice(log->l_mp, in xlog_recover()
4679 xfs_notice(log->l_mp, "Starting recovery (logdev: %s)", in xlog_recover()
4680 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover()
4683 error = xlog_do_recover(log, head_blk, tail_blk); in xlog_recover()
4684 log->l_flags |= XLOG_RECOVERY_NEEDED; in xlog_recover()
4700 struct xlog *log) in xlog_recover_finish() argument
4710 if (log->l_flags & XLOG_RECOVERY_NEEDED) { in xlog_recover_finish()
4712 error = xlog_recover_process_efis(log); in xlog_recover_finish()
4714 xfs_alert(log->l_mp, "Failed to recover EFIs"); in xlog_recover_finish()
4723 xfs_log_force(log->l_mp, XFS_LOG_SYNC); in xlog_recover_finish()
4725 xlog_recover_process_iunlinks(log); in xlog_recover_finish()
4727 xlog_recover_check_summary(log); in xlog_recover_finish()
4729 xfs_notice(log->l_mp, "Ending recovery (logdev: %s)", in xlog_recover_finish()
4730 log->l_mp->m_logname ? log->l_mp->m_logname in xlog_recover_finish()
4732 log->l_flags &= ~XLOG_RECOVERY_NEEDED; in xlog_recover_finish()
4734 xfs_info(log->l_mp, "Ending clean mount"); in xlog_recover_finish()
4741 struct xlog *log) in xlog_recover_cancel() argument
4745 if (log->l_flags & XLOG_RECOVERY_NEEDED) in xlog_recover_cancel()
4746 error = xlog_recover_cancel_efis(log); in xlog_recover_cancel()
4758 struct xlog *log) in xlog_recover_check_summary() argument
4770 mp = log->l_mp; in xlog_recover_check_summary()