xfs
[Top] [All Lists]

Re: [PATCH] xfs: disallow rw remount on fs with unknown ro-compat featur

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: [PATCH] xfs: disallow rw remount on fs with unknown ro-compat features
From: "Bill O'Donnell" <billodo@xxxxxxxxxx>
Date: Tue, 29 Mar 2016 15:40:35 -0500
Cc: xfs-oss <xfs@xxxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <56FAD75C.80502@xxxxxxxxxx>
References: <56FAD75C.80502@xxxxxxxxxx>
User-agent: Mutt/1.5.24 (2015-08-30)
On Tue, Mar 29, 2016 at 02:28:28PM -0500, Eric Sandeen wrote:
> Today, a kernel which refuses to mount a filesystem read-write
> due to unknown ro-compat features can still transition to read-write
> via the remount path.  The old kernel is most likely none the wiser,
> because it's unaware of the new feature, and isn't using it.  However,
> writing to the filesystem may well corrupt metadata related to that
> new feature, and moving to a newer kernel which understand the feature
> will have problems.
> 
> Right now the only ro-compat feature we have is the free inode btree,
> which showed up in v3.16.  It would be good to push this back to
> all the active stable kernels, I think, so that if anyone is using
> newer mkfs (which enables the finobt feature) with older kernel
> releases, they'll be protected.
> 
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> ---

Reviewed-by: Bill O'Donnell <billodo@xxxxxxxxxx>

> 
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index d760934..ca058a1 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
> @@ -1276,6 +1276,16 @@ xfs_fs_remount(
>                       return -EINVAL;
>               }
>  
> +             if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 &&
> +                 xfs_sb_has_ro_compat_feature(sbp,
> +                                     XFS_SB_FEAT_RO_COMPAT_UNKNOWN)) {
> +                     xfs_warn(mp,
> +"ro->rw transition prohibited on unknown (0x%x) ro-compat filesystem",
> +                             (sbp->sb_features_ro_compat &
> +                                     XFS_SB_FEAT_RO_COMPAT_UNKNOWN));
> +                     return -EINVAL;
> +             }
> +
>               mp->m_flags &= ~XFS_MOUNT_RDONLY;
>  
>               /*
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

<Prev in Thread] Current Thread [Next in Thread>