[Ocfs2-tools-devel] [PATCH] mount.ocfs2: return -EROFS if file system is readonly
Joseph Qi
jiangqi903 at gmail.com
Wed Dec 27 17:11:41 PST 2017
On 17/12/27 17:12, piaojun wrote:
> If metadata is corrupted such as 'invalid inode block', we will get
> -EROFS by calling 'mount()'. In this situation we need fix it by fsck,
> and mount again rather than doing meaningless retry.
>
> Signed-off-by: Jun Piao <piaojun at huawei.com>
> ---
> mount.ocfs2/mount.ocfs2.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/mount.ocfs2/mount.ocfs2.c b/mount.ocfs2/mount.ocfs2.c
> index e3d8871..1ab07ac 100644
> --- a/mount.ocfs2/mount.ocfs2.c
> +++ b/mount.ocfs2/mount.ocfs2.c
> @@ -434,8 +434,15 @@ int main(int argc, char **argv)
> o2cb_complete_group_join(&cluster, &desc, errno);
> }
> block_signals (SIG_UNBLOCK);
> - com_err(progname, ret, "while mounting %s on %s. Check 'dmesg' "
> - "for more information on this error.", mo.dev, mo.dir);
> + if (ret == -EROFS)
> + com_err(progname, 0, "file system is now readonly due to "
> + "on-disk corruption while mounting %s on %s, please "
> + "fix this by fsck.ocfs2 and then retry mounting",
> + mo.dev, mo.dir);
Could we use a meaningful error code instead of 0?
Thanks,
Joseph
> + else
> + com_err(progname, OCFS2_ET_INTERNAL_FAILURE,
> + "while mounting %s on %s. Check 'dmesg' for more "
> + "information on this error.", mo.dev, mo.dir);
> goto bail;
> }
> if (group_join) {
> @@ -478,5 +485,5 @@ bail:
> if (opts_string)
> free(opts_string);
>
> - return ret ? 1 : 0;
> + return ret;
> }
>
More information about the Ocfs2-tools-devel
mailing list