|
@@ -608,6 +608,7 @@ xfs_log_mount(
|
|
xfs_daddr_t blk_offset,
|
|
xfs_daddr_t blk_offset,
|
|
int num_bblks)
|
|
int num_bblks)
|
|
{
|
|
{
|
|
|
|
+ bool fatal = xfs_sb_version_hascrc(&mp->m_sb);
|
|
int error = 0;
|
|
int error = 0;
|
|
int min_logfsbs;
|
|
int min_logfsbs;
|
|
|
|
|
|
@@ -659,9 +660,20 @@ xfs_log_mount(
|
|
XFS_FSB_TO_B(mp, mp->m_sb.sb_logblocks),
|
|
XFS_FSB_TO_B(mp, mp->m_sb.sb_logblocks),
|
|
XFS_MAX_LOG_BYTES);
|
|
XFS_MAX_LOG_BYTES);
|
|
error = -EINVAL;
|
|
error = -EINVAL;
|
|
|
|
+ } else if (mp->m_sb.sb_logsunit > 1 &&
|
|
|
|
+ mp->m_sb.sb_logsunit % mp->m_sb.sb_blocksize) {
|
|
|
|
+ xfs_warn(mp,
|
|
|
|
+ "log stripe unit %u bytes must be a multiple of block size",
|
|
|
|
+ mp->m_sb.sb_logsunit);
|
|
|
|
+ error = -EINVAL;
|
|
|
|
+ fatal = true;
|
|
}
|
|
}
|
|
if (error) {
|
|
if (error) {
|
|
- if (xfs_sb_version_hascrc(&mp->m_sb)) {
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Log check errors are always fatal on v5; or whenever bad
|
|
|
|
+ * metadata leads to a crash.
|
|
|
|
+ */
|
|
|
|
+ if (fatal) {
|
|
xfs_crit(mp, "AAIEEE! Log failed size checks. Abort!");
|
|
xfs_crit(mp, "AAIEEE! Log failed size checks. Abort!");
|
|
ASSERT(0);
|
|
ASSERT(0);
|
|
goto out_free_log;
|
|
goto out_free_log;
|