}
wi = malloc(sizeof(struct workqueue_item));
- if (wi == NULL)
- return ENOMEM;
+ if (!wi)
+ return errno;
wi->function = func;
wi->index = index;
scrub_nproc_workqueue(ctx));
if (ret) {
moveon = false;
- str_info(ctx, ctx->mntpoint, _("Could not create workqueue."));
+ str_liberror(ctx, ret, _("creating icount workqueue"));
goto out_free;
}
for (agno = 0; agno < ctx->mnt.fsgeom.agcount; agno++) {
ret = workqueue_add(&wq, xfs_count_ag_inodes, agno, ci);
if (ret) {
moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue AG %u icount work."), agno);
+ str_liberror(ctx, ret, _("queueing icount work"));
break;
}
}
ret = workqueue_create(&wq, (struct xfs_mount *)ctx,
scrub_nproc_workqueue(ctx));
if (ret) {
- str_info(ctx, ctx->mntpoint, _("Could not create workqueue."));
+ str_liberror(ctx, ret, _("creating bulkstat workqueue"));
return false;
}
ret = workqueue_add(&wq, xfs_scan_ag_inodes, agno, &si);
if (ret) {
si.moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue AG %u bulkstat work."), agno);
+ str_liberror(ctx, ret, _("queueing bulkstat work"));
break;
}
}
ret = workqueue_create(&wq, (struct xfs_mount *)ctx,
scrub_nproc_workqueue(ctx));
if (ret) {
- str_info(ctx, ctx->mntpoint, _("Could not create workqueue."));
+ str_liberror(ctx, ret, _("creating scrub workqueue"));
return false;
}
ret = workqueue_add(&wq, xfs_scan_ag_metadata, agno, &moveon);
if (ret) {
moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue AG %u scrub work."), agno);
+ str_liberror(ctx, ret, _("queueing per-AG scrub work"));
goto out;
}
}
ret = workqueue_add(&wq, xfs_scan_fs_metadata, 0, &moveon);
if (ret) {
moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue filesystem scrub work."));
+ str_liberror(ctx, ret, _("queueing per-FS scrub work"));
goto out;
}
ret = workqueue_create(&wq, (struct xfs_mount *)ctx,
scrub_nproc_workqueue(ctx));
if (ret) {
- str_error(ctx, ctx->mntpoint, _("Could not create workqueue."));
+ str_liberror(ctx, ret, _("creating repair workqueue"));
return false;
}
for (agno = 0; agno < ctx->mnt.fsgeom.agcount; agno++) {
ret = workqueue_add(&wq, xfs_repair_ag, agno, &moveon);
if (ret) {
moveon = false;
- str_error(ctx, ctx->mntpoint,
-_("Could not queue repair work."));
+ str_liberror(ctx, ret,
+ _("queueing repair work"));
break;
}
}
ret = workqueue_add(&rvp->wq, read_verify, 0, tmp);
if (ret) {
- str_info(rvp->ctx, rvp->ctx->mntpoint,
-_("Could not queue read-verify work."));
+ str_liberror(rvp->ctx, ret, _("queueing read-verify work"));
free(tmp);
return false;
}
ret = workqueue_create(&wq, (struct xfs_mount *)ctx,
scrub_nproc_workqueue(ctx));
if (ret) {
- str_info(ctx, ctx->mntpoint, _("Could not create workqueue."));
+ str_liberror(ctx, ret, _("creating fsmap workqueue"));
return false;
}
if (ctx->fsinfo.fs_rt) {
ctx->mnt.fsgeom.agcount + 1, &sbx);
if (ret) {
sbx.moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue rtdev fsmap work."));
+ str_liberror(ctx, ret, _("queueing rtdev fsmap work"));
goto out;
}
}
ctx->mnt.fsgeom.agcount + 2, &sbx);
if (ret) {
sbx.moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue logdev fsmap work."));
+ str_liberror(ctx, ret, _("queueing logdev fsmap work"));
goto out;
}
}
ret = workqueue_add(&wq, xfs_scan_ag_blocks, agno, &sbx);
if (ret) {
sbx.moveon = false;
- str_info(ctx, ctx->mntpoint,
-_("Could not queue AG %u fsmap work."), agno);
+ str_liberror(ctx, ret, _("queueing per-AG fsmap work"));
break;
}
}
error = workqueue_add(wq, scan_fs_dir, 0, new_sftd);
if (error) {
dec_nr_dirs(sft);
- str_info(ctx, ctx->mntpoint,
-_("Could not queue subdirectory scan work."));
+ str_liberror(ctx, error, _("queueing directory scan work"));
goto out_path;
}