573
574
575 spin_lock_init(&mp->m_ail_lock);
576 error = xfs_trans_ail_init(mp);
577 if (error) {
578 cmn_err(CE_WARN, "XFS: AIL initialisation failed: error %d", error);
579 goto error;
580 }
581
582
583
584
585
586 if (!(mp->m_flags & XFS_MOUNT_NORECOVERY)) {
587 int readonly = (mp->m_flags & XFS_MOUNT_RDONLY);
588
589 if (readonly)
590 mp->m_flags &= ~XFS_MOUNT_RDONLY;
591
592 error = xlog_recover(mp->m_log);
593
594 if (readonly)
595 mp->m_flags |= XFS_MOUNT_RDONLY;
596 if (error) {
597 cmn_err(CE_WARN, "XFS: log mount/recovery failed: error %d", error);
598 goto error;
599 }
600 }
601
602
603 mp->m_log->l_flags &= ~XLOG_ACTIVE_RECOVERY;
604
605
606 return 0;
607error:
608 xfs_log_unmount_dealloc(mp);
609out:
610 return error;
611}
612
613