Laszlo Attila Toth
2009-Oct-12 09:16 UTC
[Ocfs2-devel] [PATCH] Set return value to -EINVAL if superblock probe failed
In case of non-modular kernels the root filesystem is mounted by trying several filesystems. If ocfs2 is tried before the actual filesystem type, such as squashfs, the mount is failed because ocfs2_fill_super's return value was -EAGAIN and normally it should return with -EINVAL, which means the filesystem is non-ocfs2. Signed-off-by: Laszlo Attila Toth <panther at balabit.hu> --- fs/ocfs2/super.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 476d488..1f506de 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -621,6 +621,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) /* probe for superblock */ status = ocfs2_sb_probe(sb, &bh, §or_size); if (status < 0) { + status = -EINVAL; mlog(ML_ERROR, "superblock probe failed!\n"); goto read_super_error; } -- 1.6.4.rc2
Joel Becker
2009-Oct-29 06:03 UTC
[Ocfs2-devel] [PATCH] Set return value to -EINVAL if superblock probe failed
On Mon, Oct 12, 2009 at 11:16:44AM +0200, Laszlo Attila Toth wrote:> In case of non-modular kernels the root filesystem is mounted by trying > several filesystems. If ocfs2 is tried before the actual filesystem type, > such as squashfs, the mount is failed because ocfs2_fill_super's return > value was -EAGAIN and normally it should return with -EINVAL, which means > the filesystem is non-ocfs2.ocfs2_sb_probe() shouldn't be returning -EAGAIN in the first place. I've done a different patch to the same effect, and it is now in the fixes branch of ocfs2.git. Joel -- "What does it say about a society's priorities when the time you spend in meetings on Monday is greater than the total number of hours you spent sleeping over the weekend?" - Nat Friedman Joel Becker Principal Software Developer Oracle E-mail: joel.becker at oracle.com Phone: (650) 506-8127