O_RDONLY | O_NOATIME | O_DIRECTORY);
if (error) {
if (error == EPERM)
- str_info(ctx, ctx->mntpoint,
+ str_error(ctx, ctx->mntpoint,
_("Must be root to run scrub."));
else if (error == ENOTTY)
str_error(ctx, ctx->mntpoint,
!xfs_can_scrub_bmap(ctx) || !xfs_can_scrub_dir(ctx) ||
!xfs_can_scrub_attr(ctx) || !xfs_can_scrub_symlink(ctx) ||
!xfs_can_scrub_parent(ctx)) {
- str_info(ctx, ctx->mntpoint,
+ str_error(ctx, ctx->mntpoint,
_("Kernel metadata scrubbing facility is not available."));
return false;
}
/* Do we need kernel-assisted metadata repair? */
if (ctx->mode != SCRUB_MODE_DRY_RUN && !xfs_can_repair(ctx)) {
- str_info(ctx, ctx->mntpoint,
+ str_error(ctx, ctx->mntpoint,
_("Kernel metadata repair facility is not available. Use -n to scrub."));
return false;
}
/* Did we find the log and rt devices, if they're present? */
if (ctx->mnt.fsgeom.logstart == 0 && ctx->fsinfo.fs_log == NULL) {
- str_info(ctx, ctx->mntpoint,
+ str_error(ctx, ctx->mntpoint,
_("Unable to find log device path."));
return false;
}
if (ctx->mnt.fsgeom.rtblocks && ctx->fsinfo.fs_rt == NULL) {
- str_info(ctx, ctx->mntpoint,
+ str_error(ctx, ctx->mntpoint,
_("Unable to find realtime device path."));
return false;
}
return CHECK_DONE;
case ESHUTDOWN:
/* FS already crashed, give up. */
- str_info(ctx, buf,
+ str_error(ctx, buf,
_("Filesystem is shut down, aborting."));
return CHECK_ABORT;
case EIO:
* The first two should never escape the kernel,
* and the other two should be reported via sm_flags.
*/
- str_info(ctx, buf,
-_("Kernel bug! errno=%d"), code);
+ str_liberror(ctx, code, _("Kernel bug"));
/* fall through */
default:
/* Operational error. */
return CHECK_RETRY;
case ESHUTDOWN:
/* Filesystem is already shut down, abort. */
- str_info(ctx, buf,
+ str_error(ctx, buf,
_("Filesystem is shut down, aborting."));
return CHECK_ABORT;
case ENOTTY:
case EROFS:
/* Read-only filesystem, can't fix. */
if (verbose || debug || needs_repair(&oldm))
- str_info(ctx, buf,
+ str_error(ctx, buf,
_("Read-only filesystem; cannot make changes."));
- return CHECK_DONE;
+ return CHECK_ABORT;
case ENOENT:
/* Metadata not present, just skip it. */
return CHECK_DONE;