On Thu, Oct 16, 2008 at 09:41:12PM +0800, Jianjun Kong wrote:
>On Thu, Oct 16, 2008 at 11:29:26AM +1100, Tim Shimmin wrote:
>>Resending as I mangled sending the mail from home last time. Sorry.
>>Please include the following patch for 18.104.22.168 stable release as
>>suggested by Christoph Hellwig and Eric Sandeen.
>>It fixes a regression in the recent remount recoding
>>where remounting say from ro to rw allows the xfs flags to
>>be out of sync with the vfs flags, resulting
>>in failures for some programs such as touch (which end up calling
>>The fix is a very minor and clear.
>>Date: Sun, 12 Oct 2008 14:30:44 +0200
>>From: Christoph Hellwig <hch@xxxxxx>
>>Subject: [PATCH] fix remount rw with unrecognized options
>>When we skip unrecognized options in xfs_fs_remount we should just break
>>out of the switch and not return because otherwise we may skip clearing
>>the xfs-internal read-only flag. This will only show up on some
>>operations like touch because most read-only checks are done by the VFS
>>which thinks this filesystem is r/w. Eventually we should replace the
>>XFS read-only flag with a helper that always checks the VFS flag to make
>>sure they can never get out of sync.
>>Bug reported and fix verified by Marcel Beister on #xfs.
>>Bug fix verified by updated xfstests/189.
>>Signed-off-by: Christoph Hellwig <hch@xxxxxx>
>>Acked-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
>>Signed-off-by: Timothy Shimmin <tes@xxxxxxx>
>>--- mainline.orig/fs/xfs/linux-2.6/xfs_super.c 2008-10-15
>>+++ mainline/fs/xfs/linux-2.6/xfs_super.c 2008-10-15 17:59:45.376217172
>>@@ -1323,7 +1323,7 @@ xfs_fs_remount(
>> "XFS: mount option \"%s\" not supported for remount\n", p);
>> return -EINVAL;
>>- return 0;
>And the code above "return 0" can not be executed, so delete them.
return 0; is in the removed part... so it's already removed.
> "XFS: mount option \"%s\" not supported for remount\n", p);
> return -EINVAL;
> return 0;
>Signed-off-by: Jianjun Kong <kongjianjun@xxxxxxxxx>
> fs/xfs/linux-2.6/xfs_super.c | 7 +------
> 1 files changed, 1 insertions(+), 6 deletions(-)
>diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
>index e390136..bd5ec81 100644
>@@ -1318,12 +1318,7 @@ xfs_fs_remount(
> * every remount request, and silently ignore all
> * options that we can't actually change.
>- "XFS: mount option \"%s\" not supported for remount\n", p);
>- return -EINVAL;
>+ break 0;
break 0; doesn't make any sense in C...
"Sometimes the only way to stay sane is to go a little crazy."