diff mbox series

xfs: require both realtime inodes to mount

Message ID 20181214042932.GF24487@magnolia (mailing list archive)
State Accepted
Headers show
Series xfs: require both realtime inodes to mount | expand

Commit Message

Darrick J. Wong Dec. 14, 2018, 4:29 a.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

Since mkfs always formats the filesystem with the realtime bitmap and
summary inodes immediately after the root directory, we should expect
that both of them are present and loadable, even if there isn't a
realtime volume attached.  There's no reason to skip this if rbmino ==
NULLFSINO; in fact, this causes an immediate crash if the there /is/ a
realtime volume and someone writes to it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 fs/xfs/xfs_rtalloc.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Bill O'Donnell Dec. 14, 2018, 4:08 p.m. UTC | #1
On Thu, Dec 13, 2018 at 08:29:32PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Since mkfs always formats the filesystem with the realtime bitmap and
> summary inodes immediately after the root directory, we should expect
> that both of them are present and loadable, even if there isn't a
> realtime volume attached.  There's no reason to skip this if rbmino ==
> NULLFSINO; in fact, this causes an immediate crash if the there /is/ a
> realtime volume and someone writes to it.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---

Looks fine.
Reviewed-by: Bill O'Donnell <billodo@redhat.com>

>  fs/xfs/xfs_rtalloc.c |    4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
> index aefd63d46397..afe4d29f7ab4 100644
> --- a/fs/xfs/xfs_rtalloc.c
> +++ b/fs/xfs/xfs_rtalloc.c
> @@ -1206,13 +1206,11 @@ xfs_rtmount_inodes(
>  	xfs_sb_t	*sbp;
>  
>  	sbp = &mp->m_sb;
> -	if (sbp->sb_rbmino == NULLFSINO)
> -		return 0;
>  	error = xfs_iget(mp, NULL, sbp->sb_rbmino, 0, 0, &mp->m_rbmip);
>  	if (error)
>  		return error;
>  	ASSERT(mp->m_rbmip != NULL);
> -	ASSERT(sbp->sb_rsumino != NULLFSINO);
> +
>  	error = xfs_iget(mp, NULL, sbp->sb_rsumino, 0, 0, &mp->m_rsumip);
>  	if (error) {
>  		xfs_irele(mp->m_rbmip);
diff mbox series

Patch

diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index aefd63d46397..afe4d29f7ab4 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -1206,13 +1206,11 @@  xfs_rtmount_inodes(
 	xfs_sb_t	*sbp;
 
 	sbp = &mp->m_sb;
-	if (sbp->sb_rbmino == NULLFSINO)
-		return 0;
 	error = xfs_iget(mp, NULL, sbp->sb_rbmino, 0, 0, &mp->m_rbmip);
 	if (error)
 		return error;
 	ASSERT(mp->m_rbmip != NULL);
-	ASSERT(sbp->sb_rsumino != NULLFSINO);
+
 	error = xfs_iget(mp, NULL, sbp->sb_rsumino, 0, 0, &mp->m_rsumip);
 	if (error) {
 		xfs_irele(mp->m_rbmip);