From: Darrick J. Wong Date: Mon, 28 Feb 2022 21:47:43 +0000 (-0500) Subject: xfs_scrub: fix reporting if we can't open raw block devices X-Git-Tag: v5.15.0-rc1~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d6febe33bf060d37c37f689c5b7a6c58af6afc97;p=thirdparty%2Fxfsprogs-dev.git 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 --- 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; } }