[PATCH 1/4] xfs_scrub_all: fix argument passing when invoking xfs_scrub manually

Darrick J. Wong
2023-12-31T22:54:57Z

Currently, xfs_scrub_all will try to invoke xfs_scrub with argv[1] being
"-n -x". This of course is recognized by C getopt as a weird looking
string, not two individual arguments, and causes the child process to
exit with complaints about CLI usage.

What we really want is to split the string into a proper array and then
add them to the xfs_scrub command line. The code here isn't strictly
correct, but as @scrub_args@ is controlled by us in the Makefile, it'll
do for now.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
scrub/xfs_scrub_all.in | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scrub/xfs_scrub_all.in b/scrub/xfs_scrub_all.in
index d7d36e1bdb0..671d588177a 100644
--- a/scrub/xfs_scrub_all.in
+++ b/scrub/xfs_scrub_all.in
@@ -123,7 +123,9 @@ def run_scrub(mnt, cond, running_devs, mntdevs, killfuncs):
return

# Invoke xfs_scrub manually
- cmd=['@sbindir@/xfs_scrub', '@scrub_args@', mnt]
+ cmd = ['@sbindir@/xfs_scrub']
+ cmd += '@scrub_args@'.split()
+ cmd += [mnt]
ret = run_killable(cmd, None, killfuncs, \
lambda proc: proc.terminate())
if ret >= 0: