[Ocfs2-tools-devel] [PATCH] fsck.ocfs2: close ost_fs in case of check superblock fails

piaojun piaojun at huawei.com
Sun Sep 25 00:33:49 PDT 2016


Hi Joseph,
Please see my comments below:

On 2016-9-24 11:55, Joseph Qi wrote:
> open_and_check may happen that check_superblock fails after ocfs2_open.
> Currently it goes to out without close ost->ost_fs. So close it in this
> case.
> And check ost->ost_fs to make maybe_replay_journals works properly in
> all cases.
> 
> Signed-off-by: Joseph Qi <joseph.qi at huawei.com>
> ---
>  fsck.ocfs2/fsck.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/fsck.ocfs2/fsck.c b/fsck.ocfs2/fsck.c
> index dc5209d..f71fb21 100644
> --- a/fsck.ocfs2/fsck.c
> +++ b/fsck.ocfs2/fsck.c
> @@ -471,6 +471,7 @@ static errcode_t open_and_check(o2fsck_state *ost, char *filename,
>  	if (ret) {
>  		printf("fsck saw unrecoverable errors in the super block and "
>  		       "will not continue.\n");
> +		ocfs2_close(ost->ost_fs);
>  		goto out;
>  	}
> 
> @@ -1097,12 +1098,14 @@ close:
>  		ocfs2_shutdown_dlm(ost->ost_fs, whoami);
>  	block_signals(SIG_UNBLOCK);
> 
> -	ret = ocfs2_close(ost->ost_fs);
> -	if (ret) {
> -		com_err(whoami, ret, "while closing file \"%s\"", filename);
> -		/* XXX I wonder about this error.. */
> -		fsck_mask |= FSCK_ERROR;
> -	}
> +	if (ost->ost_fs) {
> +		ret = ocfs2_close(ost->ost_fs);
> +		if (ret) {
> +			com_err(whoami, ret, "while closing file \"%s\"", filename);
> +			/* XXX I wonder about this error.. */
> +			fsck_mask |= FSCK_ERROR;
> +		}
> +	}
> 
>  out:
>  	return fsck_mask;
> 
If 'ost->ost_fs' is NULL, the access of 'ost->ost_fs->fs_dlm_ctxt' will
lead NULL pointer error, so more exceptional situations need to be
considered. I think more NULL-checkers need be added.
Thanks,
Jun




More information about the Ocfs2-tools-devel mailing list