public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount
@ 2013-05-01 14:25 Jeff Liu
  2013-05-02  1:13 ` Dave Chinner
  0 siblings, 1 reply; 5+ messages in thread
From: Jeff Liu @ 2013-05-01 14:25 UTC (permalink / raw)
  To: xfs@oss.sgi.com; +Cc: Mark Tinguely

From: Jie Liu <jeff.liu@oracle.com>

As per the mount man page, sunit and swidth can be changed via
mount options.  For XFS, on the face of it, those options seems
works if the specified alignments is properly, e.g.
# mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
# mount | grep sdb1
/dev/sdb1 on /mnt type xfs (rw,sunit=4096,swidth=8192)

However, neither sunit nor swidth is shown from the xfs_info output.
# xfs_info /mnt
meta-data=/dev/sdb1    isize=256    agcount=4, agsize=262144 blks
         =             sectsz=512   attr=2
data     =             bsize=4096   blocks=1048576, imaxpct=25
         =             sunit=0      swidth=0 blks
		       ^^^^^^^^^^^^^^^^^^^^^^^^^^
naming   =version 2    bsize=4096   ascii-ci=0
log      =internal     bsize=4096   blocks=2560, version=2
         =             sectsz=512   sunit=0 blks, lazy-count=1
realtime =none         extsz=4096   blocks=0, rtextents=0

The reason is that the alignment can only be changed if the relevant
super block is already configured with alignments, otherwise, the
given value is silently ignored.

With this fix, the attempt to mount a storage without strip alignment
setup on a super block will get an error with a warning in syslog to
indicate the true cause.

# mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
	dmesg | tail  or so
# dmesg|tail
.......
XFS (sdb1): can not change alignment: superblock does not support data
alignment

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Cc: Mark Tinguely <tinguely@sgi.com>
Cc: Dave Chinner <dchinner@redhat.com>
---
 fs/xfs/xfs_mount.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 29e8de8..2836ef6 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -909,6 +909,10 @@ xfs_update_alignment(xfs_mount_t *mp)
 				sbp->sb_width = mp->m_swidth;
 				mp->m_update_flags |= XFS_SB_WIDTH;
 			}
+		} else {
+			xfs_warn(mp, "cannot change alignment: "
+				 "superblock does not support data alignment");
+			return XFS_ERROR(EINVAL);
 		}
 	} else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN &&
 		    xfs_sb_version_hasdalign(&mp->m_sb)) {
-- 
1.7.9.5

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount
  2013-05-01 14:25 [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount Jeff Liu
@ 2013-05-02  1:13 ` Dave Chinner
  2013-05-02  6:54   ` Jeff Liu
  0 siblings, 1 reply; 5+ messages in thread
From: Dave Chinner @ 2013-05-02  1:13 UTC (permalink / raw)
  To: Jeff Liu; +Cc: Mark Tinguely, xfs@oss.sgi.com

On Wed, May 01, 2013 at 10:25:19PM +0800, Jeff Liu wrote:
> From: Jie Liu <jeff.liu@oracle.com>
> 
> As per the mount man page, sunit and swidth can be changed via
> mount options.  For XFS, on the face of it, those options seems
> works if the specified alignments is properly, e.g.
> # mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
> # mount | grep sdb1
> /dev/sdb1 on /mnt type xfs (rw,sunit=4096,swidth=8192)
> 
> However, neither sunit nor swidth is shown from the xfs_info output.
> # xfs_info /mnt
> meta-data=/dev/sdb1    isize=256    agcount=4, agsize=262144 blks
>          =             sectsz=512   attr=2
> data     =             bsize=4096   blocks=1048576, imaxpct=25
>          =             sunit=0      swidth=0 blks
> 		       ^^^^^^^^^^^^^^^^^^^^^^^^^^
> naming   =version 2    bsize=4096   ascii-ci=0
> log      =internal     bsize=4096   blocks=2560, version=2
>          =             sectsz=512   sunit=0 blks, lazy-count=1
> realtime =none         extsz=4096   blocks=0, rtextents=0
> 
> The reason is that the alignment can only be changed if the relevant
> super block is already configured with alignments, otherwise, the
> given value is silently ignored.
> 
> With this fix, the attempt to mount a storage without strip alignment
> setup on a super block will get an error with a warning in syslog to
> indicate the true cause.
> 
> # mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
> mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
>        missing codepage or helper program, or other error
>        In some cases useful info is found in syslog - try
> 	dmesg | tail  or so
> # dmesg|tail
> .......
> XFS (sdb1): can not change alignment: superblock does not support data
> alignment
> 
> Signed-off-by: Jie Liu <jeff.liu@oracle.com>
> Cc: Mark Tinguely <tinguely@sgi.com>
> Cc: Dave Chinner <dchinner@redhat.com>
> ---
>  fs/xfs/xfs_mount.c |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index 29e8de8..2836ef6 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -909,6 +909,10 @@ xfs_update_alignment(xfs_mount_t *mp)
>  				sbp->sb_width = mp->m_swidth;
>  				mp->m_update_flags |= XFS_SB_WIDTH;
>  			}
> +		} else {
> +			xfs_warn(mp, "cannot change alignment: "
> +				 "superblock does not support data alignment");

Same comment again about single line format strings. Otherwise it's
ok.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount
  2013-05-02  1:13 ` Dave Chinner
@ 2013-05-02  6:54   ` Jeff Liu
  2013-05-02  7:20     ` Dave Chinner
  0 siblings, 1 reply; 5+ messages in thread
From: Jeff Liu @ 2013-05-02  6:54 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Mark Tinguely, xfs@oss.sgi.com

On 05/02/2013 09:13 AM, Dave Chinner wrote:
> On Wed, May 01, 2013 at 10:25:19PM +0800, Jeff Liu wrote:
>> From: Jie Liu <jeff.liu@oracle.com>
>>
>> As per the mount man page, sunit and swidth can be changed via
>> mount options.  For XFS, on the face of it, those options seems
>> works if the specified alignments is properly, e.g.
>> # mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
>> # mount | grep sdb1
>> /dev/sdb1 on /mnt type xfs (rw,sunit=4096,swidth=8192)
>>
>> However, neither sunit nor swidth is shown from the xfs_info output.
>> # xfs_info /mnt
>> meta-data=/dev/sdb1    isize=256    agcount=4, agsize=262144 blks
>>          =             sectsz=512   attr=2
>> data     =             bsize=4096   blocks=1048576, imaxpct=25
>>          =             sunit=0      swidth=0 blks
>> 		       ^^^^^^^^^^^^^^^^^^^^^^^^^^
>> naming   =version 2    bsize=4096   ascii-ci=0
>> log      =internal     bsize=4096   blocks=2560, version=2
>>          =             sectsz=512   sunit=0 blks, lazy-count=1
>> realtime =none         extsz=4096   blocks=0, rtextents=0
>>
>> The reason is that the alignment can only be changed if the relevant
>> super block is already configured with alignments, otherwise, the
>> given value is silently ignored.
>>
>> With this fix, the attempt to mount a storage without strip alignment
>> setup on a super block will get an error with a warning in syslog to
>> indicate the true cause.
>>
>> # mount -o sunit=4096,swidth=8192 /dev/sdb1 /mnt
>> mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
>>        missing codepage or helper program, or other error
>>        In some cases useful info is found in syslog - try
>> 	dmesg | tail  or so
>> # dmesg|tail
>> .......
>> XFS (sdb1): can not change alignment: superblock does not support data
>> alignment
>>
>> Signed-off-by: Jie Liu <jeff.liu@oracle.com>
>> Cc: Mark Tinguely <tinguely@sgi.com>
>> Cc: Dave Chinner <dchinner@redhat.com>
>> ---
>>  fs/xfs/xfs_mount.c |    4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
>> index 29e8de8..2836ef6 100644
>> --- a/fs/xfs/xfs_mount.c
>> +++ b/fs/xfs/xfs_mount.c
>> @@ -909,6 +909,10 @@ xfs_update_alignment(xfs_mount_t *mp)
>>  				sbp->sb_width = mp->m_swidth;
>>  				mp->m_update_flags |= XFS_SB_WIDTH;
>>  			}
>> +		} else {
>> +			xfs_warn(mp, "cannot change alignment: "
>> +				 "superblock does not support data alignment");
> 
> Same comment again about single line format strings. Otherwise it's
> ok.
Ah, sorry! I misunderstood the comments of Mark before. I was bluffed
into believing that I should cut the length of log string as short as
possible. :(

It will be fixed so.

Thanks,
-Jeff

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount
  2013-05-02  6:54   ` Jeff Liu
@ 2013-05-02  7:20     ` Dave Chinner
  2013-05-02 10:56       ` Jeff Liu
  0 siblings, 1 reply; 5+ messages in thread
From: Dave Chinner @ 2013-05-02  7:20 UTC (permalink / raw)
  To: Jeff Liu; +Cc: Mark Tinguely, xfs@oss.sgi.com

On Thu, May 02, 2013 at 02:54:06PM +0800, Jeff Liu wrote:
> On 05/02/2013 09:13 AM, Dave Chinner wrote:
> > On Wed, May 01, 2013 at 10:25:19PM +0800, Jeff Liu wrote:
> >> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> >> index 29e8de8..2836ef6 100644
> >> --- a/fs/xfs/xfs_mount.c
> >> +++ b/fs/xfs/xfs_mount.c
> >> @@ -909,6 +909,10 @@ xfs_update_alignment(xfs_mount_t *mp)
> >>  				sbp->sb_width = mp->m_swidth;
> >>  				mp->m_update_flags |= XFS_SB_WIDTH;
> >>  			}
> >> +		} else {
> >> +			xfs_warn(mp, "cannot change alignment: "
> >> +				 "superblock does not support data alignment");
> > 
> > Same comment again about single line format strings. Otherwise it's
> > ok.
> Ah, sorry! I misunderstood the comments of Mark before. I was bluffed
> into believing that I should cut the length of log string as short as
> possible. :(

Thing of being able cut-n-paste the error message out of the log and
then being able to grep the source tree for it. i.e.

$ git grep "cannot change alignment: superblock does not support data alignment"

Will fail to find anything in the former case, but in the single
line case it will identify the file the error lies in immediately.
So the question I always ask myself is "is that format string easy
to find with grep?" :)

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount
  2013-05-02  7:20     ` Dave Chinner
@ 2013-05-02 10:56       ` Jeff Liu
  0 siblings, 0 replies; 5+ messages in thread
From: Jeff Liu @ 2013-05-02 10:56 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Mark Tinguely, xfs@oss.sgi.com

On 05/02/2013 03:20 PM, Dave Chinner wrote:
> On Thu, May 02, 2013 at 02:54:06PM +0800, Jeff Liu wrote:
>> On 05/02/2013 09:13 AM, Dave Chinner wrote:
>>> On Wed, May 01, 2013 at 10:25:19PM +0800, Jeff Liu wrote:
>>>> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
>>>> index 29e8de8..2836ef6 100644
>>>> --- a/fs/xfs/xfs_mount.c
>>>> +++ b/fs/xfs/xfs_mount.c
>>>> @@ -909,6 +909,10 @@ xfs_update_alignment(xfs_mount_t *mp)
>>>>  				sbp->sb_width = mp->m_swidth;
>>>>  				mp->m_update_flags |= XFS_SB_WIDTH;
>>>>  			}
>>>> +		} else {
>>>> +			xfs_warn(mp, "cannot change alignment: "
>>>> +				 "superblock does not support data alignment");
>>>
>>> Same comment again about single line format strings. Otherwise it's
>>> ok.
>> Ah, sorry! I misunderstood the comments of Mark before. I was bluffed
>> into believing that I should cut the length of log string as short as
>> possible. :(
> 
> Thing of being able cut-n-paste the error message out of the log and
> then being able to grep the source tree for it. i.e.
> 
> $ git grep "cannot change alignment: superblock does not support data alignment"
> 
> Will fail to find anything in the former case, but in the single
> line case it will identify the file the error lies in immediately.
> So the question I always ask myself is "is that format string easy
> to find with grep?" :)
I just checked your response because of my email box was broken this afternoon.

Thanks for the teaching, I'll bear it in mind. :)

Cheers,
-Jeff

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-05-02 10:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-01 14:25 [PATCH 2/2 v2] xfs: Don't keep silent if sunit/swidth can not be changed via mount Jeff Liu
2013-05-02  1:13 ` Dave Chinner
2013-05-02  6:54   ` Jeff Liu
2013-05-02  7:20     ` Dave Chinner
2013-05-02 10:56       ` Jeff Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox