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