|
@@ -4891,6 +4891,7 @@ xlog_do_recover(
|
|
|
xfs_daddr_t head_blk,
|
|
|
xfs_daddr_t tail_blk)
|
|
|
{
|
|
|
+ struct xfs_mount *mp = log->l_mp;
|
|
|
int error;
|
|
|
xfs_buf_t *bp;
|
|
|
xfs_sb_t *sbp;
|
|
@@ -4905,7 +4906,7 @@ xlog_do_recover(
|
|
|
/*
|
|
|
* If IO errors happened during recovery, bail out.
|
|
|
*/
|
|
|
- if (XFS_FORCED_SHUTDOWN(log->l_mp)) {
|
|
|
+ if (XFS_FORCED_SHUTDOWN(mp)) {
|
|
|
return -EIO;
|
|
|
}
|
|
|
|
|
@@ -4918,13 +4919,13 @@ xlog_do_recover(
|
|
|
* or iunlinks they will have some entries in the AIL; so we look at
|
|
|
* the AIL to determine how to set the tail_lsn.
|
|
|
*/
|
|
|
- xlog_assign_tail_lsn(log->l_mp);
|
|
|
+ xlog_assign_tail_lsn(mp);
|
|
|
|
|
|
/*
|
|
|
* Now that we've finished replaying all buffer and inode
|
|
|
* updates, re-read in the superblock and reverify it.
|
|
|
*/
|
|
|
- bp = xfs_getsb(log->l_mp, 0);
|
|
|
+ bp = xfs_getsb(mp, 0);
|
|
|
bp->b_flags &= ~(XBF_DONE | XBF_ASYNC);
|
|
|
ASSERT(!(bp->b_flags & XBF_WRITE));
|
|
|
bp->b_flags |= XBF_READ;
|
|
@@ -4932,7 +4933,7 @@ xlog_do_recover(
|
|
|
|
|
|
error = xfs_buf_submit_wait(bp);
|
|
|
if (error) {
|
|
|
- if (!XFS_FORCED_SHUTDOWN(log->l_mp)) {
|
|
|
+ if (!XFS_FORCED_SHUTDOWN(mp)) {
|
|
|
xfs_buf_ioerror_alert(bp, __func__);
|
|
|
ASSERT(0);
|
|
|
}
|
|
@@ -4941,14 +4942,17 @@ xlog_do_recover(
|
|
|
}
|
|
|
|
|
|
/* Convert superblock from on-disk format */
|
|
|
- sbp = &log->l_mp->m_sb;
|
|
|
+ sbp = &mp->m_sb;
|
|
|
xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp));
|
|
|
- ASSERT(sbp->sb_magicnum == XFS_SB_MAGIC);
|
|
|
- ASSERT(xfs_sb_good_version(sbp));
|
|
|
- xfs_reinit_percpu_counters(log->l_mp);
|
|
|
-
|
|
|
xfs_buf_relse(bp);
|
|
|
|
|
|
+ /* re-initialise in-core superblock and geometry structures */
|
|
|
+ xfs_reinit_percpu_counters(mp);
|
|
|
+ error = xfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi);
|
|
|
+ if (error) {
|
|
|
+ xfs_warn(mp, "Failed post-recovery per-ag init: %d", error);
|
|
|
+ return error;
|
|
|
+ }
|
|
|
|
|
|
xlog_recover_check_summary(log);
|
|
|
|