aboutsummaryrefslogtreecommitdiffstats
path: root/scrub
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2019-10-16 22:35:25 -0400
committerEric Sandeen <sandeen@sandeen.net>2019-10-16 22:35:25 -0400
commitf0bbbd722f4345645977b6c129de87db69b9ae8d (patch)
tree3ef3fa1be28fba15bdd6f677d53cc471c2a65846 /scrub
parent8808a003cd8ce5014e31032c26e5f4f8efff21dc (diff)
downloadxfsprogs-dev-f0bbbd722f4345645977b6c129de87db69b9ae8d.tar.gz
xfs_scrub: move all the queue_subdir error reporting to callers
Change queue_subdir to return a positive error code to callers and move the error reporting to the callers. This continues the process of changing internal functions to return error codes. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Diffstat (limited to 'scrub')
-rw-r--r--scrub/vfs.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/scrub/vfs.c b/scrub/vfs.c
index 49d689af8f..e0bc3ea436 100644
--- a/scrub/vfs.c
+++ b/scrub/vfs.c
@@ -72,7 +72,7 @@ dec_nr_dirs(
}
/* Queue a directory for scanning. */
-static bool
+static int
queue_subdir(
struct scrub_ctx *ctx,
struct scan_fs_tree *sft,
@@ -84,14 +84,12 @@ queue_subdir(
int error;
new_sftd = malloc(sizeof(struct scan_fs_tree_dir));
- if (!new_sftd) {
- str_errno(ctx, _("creating directory scan context"));
- return false;
- }
+ if (!new_sftd)
+ return errno;
new_sftd->path = strdup(path);
if (!new_sftd->path) {
- str_errno(ctx, _("creating directory scan path"));
+ error = errno;
goto out_sftd;
}
@@ -106,12 +104,12 @@ queue_subdir(
goto out_path;
}
- return true;
+ return 0;
out_path:
free(new_sftd->path);
out_sftd:
free(new_sftd);
- return false;
+ return error;
}
/* Scan a directory sub tree. */
@@ -187,10 +185,13 @@ scan_fs_dir(
/* If directory, call ourselves recursively. */
if (S_ISDIR(sb.st_mode) && strcmp(".", dirent->d_name) &&
strcmp("..", dirent->d_name)) {
- sft->moveon = queue_subdir(ctx, sft, wq, newpath,
- false);
- if (!sft->moveon)
+ error = queue_subdir(ctx, sft, wq, newpath, false);
+ if (error) {
+ str_liberror(ctx, error,
+_("queueing subdirectory scan"));
+ sft->moveon = false;
break;
+ }
}
}
@@ -233,9 +234,11 @@ scan_fs_tree(
return false;
}
- sft.moveon = queue_subdir(ctx, &sft, &wq, ctx->mntpoint, true);
- if (!sft.moveon)
+ ret = queue_subdir(ctx, &sft, &wq, ctx->mntpoint, true);
+ if (ret) {
+ str_liberror(ctx, ret, _("queueing directory scan"));
goto out_wq;
+ }
/*
* Wait for the wakeup to trigger, which should only happen when the