From d6febe33bf060d37c37f689c5b7a6c58af6afc97 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 28 Feb 2022 16:47:43 -0500 Subject: [PATCH] xfs_scrub: fix reporting if we can't open raw block devices The error checking logic for opening the data, log, and rt device is totally broken. Fix this. Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: Eric Sandeen --- scrub/phase1.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/scrub/phase1.c b/scrub/phase1.c index 4f0282496..fd1050c92 100644 --- a/scrub/phase1.c +++ b/scrub/phase1.c @@ -170,9 +170,9 @@ _("Unable to find realtime device path.")); /* Open the raw devices. */ ctx->datadev = disk_open(ctx->fsinfo.fs_name); - if (error) { - str_errno(ctx, ctx->fsinfo.fs_name); - return error; + if (!ctx->datadev) { + str_error(ctx, ctx->mntpoint, _("Unable to open data device.")); + return ECANCELED; } ctx->nr_io_threads = disk_heads(ctx->datadev); @@ -184,16 +184,18 @@ _("Unable to find realtime device path.")); if (ctx->fsinfo.fs_log) { ctx->logdev = disk_open(ctx->fsinfo.fs_log); - if (error) { - str_errno(ctx, ctx->fsinfo.fs_name); - return error; + if (!ctx->logdev) { + str_error(ctx, ctx->mntpoint, + _("Unable to open external log device.")); + return ECANCELED; } } if (ctx->fsinfo.fs_rt) { ctx->rtdev = disk_open(ctx->fsinfo.fs_rt); - if (error) { - str_errno(ctx, ctx->fsinfo.fs_name); - return error; + if (!ctx->rtdev) { + str_error(ctx, ctx->mntpoint, + _("Unable to open realtime device.")); + return ECANCELED; } } -- 2.47.2