ocfs2: Return -EINVAL when a device is not ocfs2.
In case of non-modular kernels the root filesystem is mounted by trying several filesystems. If ocfs2 was tried before the actual filesystem type, the mount would fail because ocfs2_sb_probe() returns -EAGAIN instead of -EINVAL. ocfs2 will now return -EINVAL properly. Signed-off-by: Joel Becker <joel.becker@oracle.com> Reported-by: Laszlo Attila Toth <panther@balabit.hu>
This commit is contained in:
parent
964fe080d9
commit
fb5cbe9efd
|
@ -773,18 +773,20 @@ static int ocfs2_sb_probe(struct super_block *sb,
|
|||
if (tmpstat < 0) {
|
||||
status = tmpstat;
|
||||
mlog_errno(status);
|
||||
goto bail;
|
||||
break;
|
||||
}
|
||||
di = (struct ocfs2_dinode *) (*bh)->b_data;
|
||||
memset(stats, 0, sizeof(struct ocfs2_blockcheck_stats));
|
||||
spin_lock_init(&stats->b_lock);
|
||||
status = ocfs2_verify_volume(di, *bh, blksize, stats);
|
||||
if (status >= 0)
|
||||
goto bail;
|
||||
brelse(*bh);
|
||||
*bh = NULL;
|
||||
if (status != -EAGAIN)
|
||||
tmpstat = ocfs2_verify_volume(di, *bh, blksize, stats);
|
||||
if (tmpstat < 0) {
|
||||
brelse(*bh);
|
||||
*bh = NULL;
|
||||
}
|
||||
if (tmpstat != -EAGAIN) {
|
||||
status = tmpstat;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bail:
|
||||
|
|
Loading…
Reference in a new issue