[lvc-project] [PATCH v2] gfs2: eliminate unreachable code in gfs2_freeze_super()

Fedor Pchelkin pchelkin at ispras.ru
Tue Nov 11 12:08:24 MSK 2025


On Mon, 10. Nov 23:48, Alexey Velichayshiy wrote:
> Move gfs2_do_thaw() call outside of gfs2_lock_fs_check_clean() error
> handling block to ensure proper error code processing.

Можно чуть подраскрыть описание, пояснив с чего вдруг это было найдено и
в чём собственно заключается решаемая проблема.  В том, что тело второго
блока обработки ошибок стало недостижимым после коммита b77b4a4815a9
("gfs2: Rework freeze / thaw logic").

> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Signed-off-by: Alexey Velichayshiy <a.velichayshiy at ispras.ru>
> ---

Сейчас патч почему-то перестал быть применимым к upstream-репозиторию
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/

Просьба переподготовить и выслать ещё раз.

>  fs/gfs2/super.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
> index 03b407a925dc..320bea5215f5 100644
> --- a/fs/gfs2/super.c
> +++ b/fs/gfs2/super.c
> @@ -747,11 +747,7 @@ static int gfs2_freeze_super(struct super_block *sb, enum freeze_holder who,
>  			set_bit(SDF_FREEZE_INITIATOR, &sdp->sd_flags);
>  			set_bit(SDF_FROZEN, &sdp->sd_flags);
>  			break;
> -		}
> -
> -		error = gfs2_do_thaw(sdp, who, freeze_owner);
> -
> -		if (error == -EBUSY)
> +		} else if (error == -EBUSY)
>  			fs_err(sdp, "waiting for recovery before freeze\n");
>  		else if (error == -EIO) {
>  			fs_err(sdp, "Fatal IO error: cannot freeze gfs2 due "
> @@ -760,6 +756,11 @@ static int gfs2_freeze_super(struct super_block *sb, enum freeze_holder who,
>  		} else {
>  			fs_err(sdp, "error freezing FS: %d\n", error);
>  		}
> +
> +		error = gfs2_do_thaw(sdp, who, freeze_owner);
> +		if (error)
> +			goto out;
> +
>  		fs_err(sdp, "retrying...\n");
>  		msleep(1000);
>  	}
> -- 
> 2.43.0



More information about the lvc-project mailing list