diff mbox series

[1/2] xfs: remove deprecated mount options

Message ID 20200924170747.65876-2-preichl@redhat.com (mailing list archive)
State Superseded, archived
Headers show
Series xfs: remove deprecated mount and sysctl options | expand

Commit Message

Pavel Reichl Sept. 24, 2020, 5:07 p.m. UTC
ikeep/noikeep was a workaround for old DMAPI code which is no longer
relevant.

attr2/noattr2 - is for controlling upgrade behaviour from fixed attribute
fork sizes in the inode (attr1) and dynamic attribute fork sizes (attr2).
mkfs has defaulted to setting attr2 since 2007, hence just about every
XFS filesystem out there in production right now uses attr2.

Signed-off-by: Pavel Reichl <preichl@redhat.com>
---
 Documentation/admin-guide/xfs.rst |  2 ++
 fs/xfs/xfs_super.c                | 30 +++++++++++++++++-------------
 2 files changed, 19 insertions(+), 13 deletions(-)

Comments

Darrick J. Wong Sept. 24, 2020, 5:26 p.m. UTC | #1
On Thu, Sep 24, 2020 at 07:07:46PM +0200, Pavel Reichl wrote:
> ikeep/noikeep was a workaround for old DMAPI code which is no longer
> relevant.
> 
> attr2/noattr2 - is for controlling upgrade behaviour from fixed attribute
> fork sizes in the inode (attr1) and dynamic attribute fork sizes (attr2).
> mkfs has defaulted to setting attr2 since 2007, hence just about every
> XFS filesystem out there in production right now uses attr2.
> 
> Signed-off-by: Pavel Reichl <preichl@redhat.com>
> ---
>  Documentation/admin-guide/xfs.rst |  2 ++
>  fs/xfs/xfs_super.c                | 30 +++++++++++++++++-------------
>  2 files changed, 19 insertions(+), 13 deletions(-)
> 
> diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst
> index f461d6c33534..413f68efccc0 100644
> --- a/Documentation/admin-guide/xfs.rst
> +++ b/Documentation/admin-guide/xfs.rst
> @@ -217,6 +217,8 @@ Deprecated Mount Options
>  ===========================     ================
>    Name				Removal Schedule
>  ===========================     ================
> +  ikeep/noikeep			TBD
> +  attr2/noattr2			TBD

Er... what date did you have in mind?

>  ===========================     ================
>  
>  
> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> index 71ac6c1cdc36..4c26b283b7d8 100644
> --- a/fs/xfs/xfs_super.c
> +++ b/fs/xfs/xfs_super.c
> @@ -1234,25 +1234,12 @@ xfs_fc_parse_param(
>  	case Opt_nouuid:
>  		mp->m_flags |= XFS_MOUNT_NOUUID;
>  		return 0;
> -	case Opt_ikeep:
> -		mp->m_flags |= XFS_MOUNT_IKEEP;
> -		return 0;
> -	case Opt_noikeep:
> -		mp->m_flags &= ~XFS_MOUNT_IKEEP;
> -		return 0;
>  	case Opt_largeio:
>  		mp->m_flags |= XFS_MOUNT_LARGEIO;
>  		return 0;
>  	case Opt_nolargeio:
>  		mp->m_flags &= ~XFS_MOUNT_LARGEIO;
>  		return 0;
> -	case Opt_attr2:
> -		mp->m_flags |= XFS_MOUNT_ATTR2;
> -		return 0;
> -	case Opt_noattr2:
> -		mp->m_flags &= ~XFS_MOUNT_ATTR2;
> -		mp->m_flags |= XFS_MOUNT_NOATTR2;
> -		return 0;
>  	case Opt_filestreams:
>  		mp->m_flags |= XFS_MOUNT_FILESTREAMS;
>  		return 0;
> @@ -1304,6 +1291,23 @@ xfs_fc_parse_param(
>  		xfs_mount_set_dax_mode(mp, result.uint_32);
>  		return 0;
>  #endif
> +	case Opt_ikeep:
> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> +		mp->m_flags |= XFS_MOUNT_IKEEP;

It's a little odd that you didn't then remove these XFS_MOUNT_ flags.
It's strange to declare a mount option deprecated but still have it
change behavior.

In this case, I guess we should keep ikeep/noikeep in the mount options
table so that scripts won't fail, but then we remove XFS_MOUNT_IKEEP and
change the codebase to always take the IKEEP behavior and delete the
code that handled the !IKEEP behavior.

> +		return 0;
> +	case Opt_noikeep:
> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> +		mp->m_flags &= ~XFS_MOUNT_IKEEP;
> +		return 0;
> +	case Opt_attr2:
> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> +		mp->m_flags |= XFS_MOUNT_ATTR2;

If the kernel /does/ encounter an attr1 filesystem, what will it do now?
IIRC the default (if there is no attr2/noattr2 mount option) is to
auto-upgrade the fs, right?  So will we stop doing that, or are we
making the upgrade mandatory now?

> +		return 0;
> +	case Opt_noattr2:
> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> +		mp->m_flags &= ~XFS_MOUNT_ATTR2;
> +		mp->m_flags |= XFS_MOUNT_NOATTR2;

Also, uh, why move these code hunks?

--D

> +		return 0;
>  	default:
>  		xfs_warn(mp, "unknown mount option [%s].", param->key);
>  		return -EINVAL;
> -- 
> 2.26.2
>
Eric Sandeen Sept. 24, 2020, 5:39 p.m. UTC | #2
On 9/24/20 12:26 PM, Darrick J. Wong wrote:
> On Thu, Sep 24, 2020 at 07:07:46PM +0200, Pavel Reichl wrote:
>> ikeep/noikeep was a workaround for old DMAPI code which is no longer
>> relevant.
>>
>> attr2/noattr2 - is for controlling upgrade behaviour from fixed attribute
>> fork sizes in the inode (attr1) and dynamic attribute fork sizes (attr2).
>> mkfs has defaulted to setting attr2 since 2007, hence just about every
>> XFS filesystem out there in production right now uses attr2.
>>
>> Signed-off-by: Pavel Reichl <preichl@redhat.com>
>> ---
>>  Documentation/admin-guide/xfs.rst |  2 ++
>>  fs/xfs/xfs_super.c                | 30 +++++++++++++++++-------------
>>  2 files changed, 19 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst
>> index f461d6c33534..413f68efccc0 100644
>> --- a/Documentation/admin-guide/xfs.rst
>> +++ b/Documentation/admin-guide/xfs.rst
>> @@ -217,6 +217,8 @@ Deprecated Mount Options
>>  ===========================     ================
>>    Name				Removal Schedule
>>  ===========================     ================
>> +  ikeep/noikeep			TBD
>> +  attr2/noattr2			TBD
> 
> Er... what date did you have in mind?
> 
>>  ===========================     ================
>>  
>>  
>> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
>> index 71ac6c1cdc36..4c26b283b7d8 100644
>> --- a/fs/xfs/xfs_super.c
>> +++ b/fs/xfs/xfs_super.c
>> @@ -1234,25 +1234,12 @@ xfs_fc_parse_param(
>>  	case Opt_nouuid:
>>  		mp->m_flags |= XFS_MOUNT_NOUUID;
>>  		return 0;
>> -	case Opt_ikeep:
>> -		mp->m_flags |= XFS_MOUNT_IKEEP;
>> -		return 0;
>> -	case Opt_noikeep:
>> -		mp->m_flags &= ~XFS_MOUNT_IKEEP;
>> -		return 0;
>>  	case Opt_largeio:
>>  		mp->m_flags |= XFS_MOUNT_LARGEIO;
>>  		return 0;
>>  	case Opt_nolargeio:
>>  		mp->m_flags &= ~XFS_MOUNT_LARGEIO;
>>  		return 0;
>> -	case Opt_attr2:
>> -		mp->m_flags |= XFS_MOUNT_ATTR2;
>> -		return 0;
>> -	case Opt_noattr2:
>> -		mp->m_flags &= ~XFS_MOUNT_ATTR2;
>> -		mp->m_flags |= XFS_MOUNT_NOATTR2;
>> -		return 0;
>>  	case Opt_filestreams:
>>  		mp->m_flags |= XFS_MOUNT_FILESTREAMS;
>>  		return 0;
>> @@ -1304,6 +1291,23 @@ xfs_fc_parse_param(
>>  		xfs_mount_set_dax_mode(mp, result.uint_32);
>>  		return 0;
>>  #endif
>> +	case Opt_ikeep:
>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>> +		mp->m_flags |= XFS_MOUNT_IKEEP;
> 
> It's a little odd that you didn't then remove these XFS_MOUNT_ flags.
> It's strange to declare a mount option deprecated but still have it
> change behavior.

but ... this doesn't change behavior, right?  The flag is still set.

I think it makes sense to announce deprecation, with a date set for future
removal, but keep all other behavior the same.  That gives people who still
need it (if any exist) time to complain, right?

> In this case, I guess we should keep ikeep/noikeep in the mount options
> table so that scripts won't fail, but then we remove XFS_MOUNT_IKEEP and
> change the codebase to always take the IKEEP behavior and delete the
> code that handled the !IKEEP behavior.
> 
>> +		return 0;
>> +	case Opt_noikeep:
>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>> +		mp->m_flags &= ~XFS_MOUNT_IKEEP;
>> +		return 0;
>> +	case Opt_attr2:
>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>> +		mp->m_flags |= XFS_MOUNT_ATTR2;
> 
> If the kernel /does/ encounter an attr1 filesystem, what will it do now?

The same as it did yesterday; the flag is still set for now.

> IIRC the default (if there is no attr2/noattr2 mount option) is to
> auto-upgrade the fs, right?  So will we stop doing that, or are we
> making the upgrade mandatory now?
> 
>> +		return 0;
>> +	case Opt_noattr2:
>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>> +		mp->m_flags &= ~XFS_MOUNT_ATTR2;
>> +		mp->m_flags |= XFS_MOUNT_NOATTR2;
> 
> Also, uh, why move these code hunks?

That's my fault, I had suggested moving all the deprecated options to the end.

Maybe with a comment, /* REMOVE ME 2089 */ or whatever we pick?

-Eric
Darrick J. Wong Sept. 24, 2020, 5:49 p.m. UTC | #3
On Thu, Sep 24, 2020 at 12:39:07PM -0500, Eric Sandeen wrote:
> On 9/24/20 12:26 PM, Darrick J. Wong wrote:
> > On Thu, Sep 24, 2020 at 07:07:46PM +0200, Pavel Reichl wrote:
> >> ikeep/noikeep was a workaround for old DMAPI code which is no longer
> >> relevant.
> >>
> >> attr2/noattr2 - is for controlling upgrade behaviour from fixed attribute
> >> fork sizes in the inode (attr1) and dynamic attribute fork sizes (attr2).
> >> mkfs has defaulted to setting attr2 since 2007, hence just about every
> >> XFS filesystem out there in production right now uses attr2.
> >>
> >> Signed-off-by: Pavel Reichl <preichl@redhat.com>
> >> ---
> >>  Documentation/admin-guide/xfs.rst |  2 ++
> >>  fs/xfs/xfs_super.c                | 30 +++++++++++++++++-------------
> >>  2 files changed, 19 insertions(+), 13 deletions(-)
> >>
> >> diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst
> >> index f461d6c33534..413f68efccc0 100644
> >> --- a/Documentation/admin-guide/xfs.rst
> >> +++ b/Documentation/admin-guide/xfs.rst
> >> @@ -217,6 +217,8 @@ Deprecated Mount Options
> >>  ===========================     ================
> >>    Name				Removal Schedule
> >>  ===========================     ================
> >> +  ikeep/noikeep			TBD
> >> +  attr2/noattr2			TBD
> > 
> > Er... what date did you have in mind?

June 65th, 2089 it is, then. ;)

> >>  ===========================     ================
> >>  
> >>  
> >> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
> >> index 71ac6c1cdc36..4c26b283b7d8 100644
> >> --- a/fs/xfs/xfs_super.c
> >> +++ b/fs/xfs/xfs_super.c
> >> @@ -1234,25 +1234,12 @@ xfs_fc_parse_param(
> >>  	case Opt_nouuid:
> >>  		mp->m_flags |= XFS_MOUNT_NOUUID;
> >>  		return 0;
> >> -	case Opt_ikeep:
> >> -		mp->m_flags |= XFS_MOUNT_IKEEP;
> >> -		return 0;
> >> -	case Opt_noikeep:
> >> -		mp->m_flags &= ~XFS_MOUNT_IKEEP;
> >> -		return 0;
> >>  	case Opt_largeio:
> >>  		mp->m_flags |= XFS_MOUNT_LARGEIO;
> >>  		return 0;
> >>  	case Opt_nolargeio:
> >>  		mp->m_flags &= ~XFS_MOUNT_LARGEIO;
> >>  		return 0;
> >> -	case Opt_attr2:
> >> -		mp->m_flags |= XFS_MOUNT_ATTR2;
> >> -		return 0;
> >> -	case Opt_noattr2:
> >> -		mp->m_flags &= ~XFS_MOUNT_ATTR2;
> >> -		mp->m_flags |= XFS_MOUNT_NOATTR2;
> >> -		return 0;
> >>  	case Opt_filestreams:
> >>  		mp->m_flags |= XFS_MOUNT_FILESTREAMS;
> >>  		return 0;
> >> @@ -1304,6 +1291,23 @@ xfs_fc_parse_param(
> >>  		xfs_mount_set_dax_mode(mp, result.uint_32);
> >>  		return 0;
> >>  #endif
> >> +	case Opt_ikeep:
> >> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> >> +		mp->m_flags |= XFS_MOUNT_IKEEP;
> > 
> > It's a little odd that you didn't then remove these XFS_MOUNT_ flags.
> > It's strange to declare a mount option deprecated but still have it
> > change behavior.
> 
> but ... this doesn't change behavior, right?  The flag is still set.
> 
> I think it makes sense to announce deprecation, with a date set for future
> removal, but keep all other behavior the same.  That gives people who still
> need it (if any exist) time to complain, right?

Ok.  I'm fine with these knobs continuing to affect xfs behavior right
up to the deprecation date.

> > In this case, I guess we should keep ikeep/noikeep in the mount options
> > table so that scripts won't fail, but then we remove XFS_MOUNT_IKEEP and
> > change the codebase to always take the IKEEP behavior and delete the
> > code that handled the !IKEEP behavior.
> > 
> >> +		return 0;
> >> +	case Opt_noikeep:
> >> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> >> +		mp->m_flags &= ~XFS_MOUNT_IKEEP;
> >> +		return 0;
> >> +	case Opt_attr2:
> >> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> >> +		mp->m_flags |= XFS_MOUNT_ATTR2;

Side note: shouldn't this clause be clearing XFS_MOUNT_NOATTR2?

> > 
> > If the kernel /does/ encounter an attr1 filesystem, what will it do now?
> 
> The same as it did yesterday; the flag is still set for now.
> 
> > IIRC the default (if there is no attr2/noattr2 mount option) is to
> > auto-upgrade the fs, right?  So will we stop doing that, or are we
> > making the upgrade mandatory now?
> > 
> >> +		return 0;
> >> +	case Opt_noattr2:
> >> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
> >> +		mp->m_flags &= ~XFS_MOUNT_ATTR2;
> >> +		mp->m_flags |= XFS_MOUNT_NOATTR2;
> > 
> > Also, uh, why move these code hunks?
> 
> That's my fault, I had suggested moving all the deprecated options to the end.
> 
> Maybe with a comment, /* REMOVE ME 2089 */ or whatever we pick?

Ah.

--D

> -Eric
Pavel Reichl Sept. 25, 2020, 1:38 p.m. UTC | #4
that handled the !IKEEP behavior.
>>>
>>>> +		return 0;
>>>> +	case Opt_noikeep:
>>>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>>>> +		mp->m_flags &= ~XFS_MOUNT_IKEEP;
>>>> +		return 0;
>>>> +	case Opt_attr2:
>>>> +		xfs_warn(mp, "%s mount option is deprecated.", param->key);
>>>> +		mp->m_flags |= XFS_MOUNT_ATTR2;
> 
> Side note: shouldn't this clause be clearing XFS_MOUNT_NOATTR2?
> 

I don't know but since nobody complained so far and we are actually starting work to remove it...I think it's safe to ignore that...?
Pavel Reichl Sept. 25, 2020, 1:40 p.m. UTC | #5
Thanks for discussion, if I get it right, the only thing to change is to add the date when mount options will me removed (September 2025)?
Eric Sandeen Sept. 25, 2020, 2:50 p.m. UTC | #6
On 9/25/20 8:40 AM, Pavel Reichl wrote:
> Thanks for discussion, if I get it right, the only thing to change is to add the date when mount options will me removed (September 2025)?

Please also add a comment above the moved mount options indicating that
all options below the comment are slated for deprecation.

Not sure if Darrick had anything else.  Are we happy w/ the kernel logging?
Darrick J. Wong Sept. 25, 2020, 3:54 p.m. UTC | #7
On Fri, Sep 25, 2020 at 09:50:45AM -0500, Eric Sandeen wrote:
> On 9/25/20 8:40 AM, Pavel Reichl wrote:
> > Thanks for discussion, if I get it right, the only thing to change is to add the date when mount options will me removed (September 2025)?
> 
> Please also add a comment above the moved mount options indicating that
> all options below the comment are slated for deprecation.
> 
> Not sure if Darrick had anything else.  Are we happy w/ the kernel logging?

Yeah, I'm fine with it. :)

--D
diff mbox series

Patch

diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst
index f461d6c33534..413f68efccc0 100644
--- a/Documentation/admin-guide/xfs.rst
+++ b/Documentation/admin-guide/xfs.rst
@@ -217,6 +217,8 @@  Deprecated Mount Options
 ===========================     ================
   Name				Removal Schedule
 ===========================     ================
+  ikeep/noikeep			TBD
+  attr2/noattr2			TBD
 ===========================     ================
 
 
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 71ac6c1cdc36..4c26b283b7d8 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1234,25 +1234,12 @@  xfs_fc_parse_param(
 	case Opt_nouuid:
 		mp->m_flags |= XFS_MOUNT_NOUUID;
 		return 0;
-	case Opt_ikeep:
-		mp->m_flags |= XFS_MOUNT_IKEEP;
-		return 0;
-	case Opt_noikeep:
-		mp->m_flags &= ~XFS_MOUNT_IKEEP;
-		return 0;
 	case Opt_largeio:
 		mp->m_flags |= XFS_MOUNT_LARGEIO;
 		return 0;
 	case Opt_nolargeio:
 		mp->m_flags &= ~XFS_MOUNT_LARGEIO;
 		return 0;
-	case Opt_attr2:
-		mp->m_flags |= XFS_MOUNT_ATTR2;
-		return 0;
-	case Opt_noattr2:
-		mp->m_flags &= ~XFS_MOUNT_ATTR2;
-		mp->m_flags |= XFS_MOUNT_NOATTR2;
-		return 0;
 	case Opt_filestreams:
 		mp->m_flags |= XFS_MOUNT_FILESTREAMS;
 		return 0;
@@ -1304,6 +1291,23 @@  xfs_fc_parse_param(
 		xfs_mount_set_dax_mode(mp, result.uint_32);
 		return 0;
 #endif
+	case Opt_ikeep:
+		xfs_warn(mp, "%s mount option is deprecated.", param->key);
+		mp->m_flags |= XFS_MOUNT_IKEEP;
+		return 0;
+	case Opt_noikeep:
+		xfs_warn(mp, "%s mount option is deprecated.", param->key);
+		mp->m_flags &= ~XFS_MOUNT_IKEEP;
+		return 0;
+	case Opt_attr2:
+		xfs_warn(mp, "%s mount option is deprecated.", param->key);
+		mp->m_flags |= XFS_MOUNT_ATTR2;
+		return 0;
+	case Opt_noattr2:
+		xfs_warn(mp, "%s mount option is deprecated.", param->key);
+		mp->m_flags &= ~XFS_MOUNT_ATTR2;
+		mp->m_flags |= XFS_MOUNT_NOATTR2;
+		return 0;
 	default:
 		xfs_warn(mp, "unknown mount option [%s].", param->key);
 		return -EINVAL;