Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26430752 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Christoph Hellwig
Browse files

xfs: fix error handling in xfs_log_mount



We can't just call xfs_log_unmount_dealloc on any failure because the
ail thread which is torn down by xfs_log_unmount_dealloc might not
be initialized yet.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarFelix Blyakher <felixb@sgi.com>
Reported-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent 8e08f6eb
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -574,7 +574,7 @@ xfs_log_mount(
	error = xfs_trans_ail_init(mp);
	if (error) {
		cmn_err(CE_WARN, "XFS: AIL initialisation failed: error %d", error);
		goto error;
		goto out_free_log;
	}
	mp->m_log->l_ailp = mp->m_ail;

@@ -594,20 +594,22 @@ xfs_log_mount(
			mp->m_flags |= XFS_MOUNT_RDONLY;
		if (error) {
			cmn_err(CE_WARN, "XFS: log mount/recovery failed: error %d", error);
			goto error;
			goto out_destroy_ail;
		}
	}

	/* Normal transactions can now occur */
	mp->m_log->l_flags &= ~XLOG_ACTIVE_RECOVERY;

	/* End mounting message in xfs_log_mount_finish */
	return 0;
error:
	xfs_log_unmount_dealloc(mp);

out_destroy_ail:
	xfs_trans_ail_destroy(mp);
out_free_log:
	xlog_dealloc_log(mp->m_log);
out:
	return error;
}	/* xfs_log_mount */
}

/*
 * Finish the recovery of the file system.  This is separate from