From 792fa045a1975a1a18af0d72470134e5bf997d6a Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 3 May 2021 19:25:23 -0600 Subject: [PATCH] LU-13440 utils: fix handling of lsa_stripe_off = -1 Use LMV_OFFSET_DEFAULT instead of "-1" for parsing lfs_setdirstripe() since parse_targets() will return "(__u32)-1" to the caller for the stripe index, but lsa_stripe_off is a signed long long so it is interpreted as 4294967295. This causes the parsing to fail when "lfs setdirstripe -i -1 --max-inherit-rr 1" is used. Update sanity test_413a/413c to also specify "-i -1" to verify this. Fixes: f167f78e3bfd ("LU-13440 lmv: add default LMV inherit depth") Test-Parameters: trivial Signed-off-by: Andreas Dilger Change-Id: Ic934f859173155b1b2df56fcd315c8da633ebbe5 --- lustre/tests/sanity.sh | 4 ++-- lustre/utils/lfs.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index d43103e..d87cef0 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -23691,7 +23691,7 @@ test_413a() { mkdir $DIR/$tdir-s$stripe_count || error "mkdir failed" mkdir $DIR/$tdir-s$stripe_count/rr || error "mkdir failed" mkdir $DIR/$tdir-s$stripe_count/qos || error "mkdir failed" - test_qos_mkdir "$LFS mkdir -c $stripe_count" $stripe_count + test_qos_mkdir "$LFS mkdir -i -1 -c $stripe_count" $stripe_count done } run_test 413a "QoS mkdir with 'lfs mkdir -i -1'" @@ -23738,7 +23738,7 @@ test_413c() { # default max_inherit is -1, default max_inherit_rr is 0 $LFS setdirstripe -D -c 1 $testdir/rr || error "setdirstripe rr failed" - $LFS setdirstripe -D -c 1 -X 2 --max-inherit-rr 1 $testdir/qos || + $LFS setdirstripe -D -c 1 -i -1 -X 2 --max-inherit-rr 1 $testdir/qos || error "setdirstripe qos failed" test_qos_mkdir "mkdir" 1 diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 77aabd2..01cd5bc 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -6607,7 +6607,7 @@ static int lfs_setdirstripe(int argc, char **argv) if (!delete && lsa.lsa_stripe_off == LLAPI_LAYOUT_DEFAULT && lsa.lsa_stripe_count == LLAPI_LAYOUT_DEFAULT && !foreign_mode) { /* if no parameters set, create directory on least-used MDTs */ - lsa.lsa_stripe_off = -1; + lsa.lsa_stripe_off = LMV_OFFSET_DEFAULT; lsa.lsa_stripe_count = 1; } @@ -6674,14 +6674,14 @@ static int lfs_setdirstripe(int argc, char **argv) } /* if "lfs setdirstripe -D -i -1" is used, assume 1-stripe directory */ - if (default_stripe && lsa.lsa_stripe_off == -1 && + if (default_stripe && lsa.lsa_stripe_off == LMV_OFFSET_DEFAULT && (lsa.lsa_stripe_count == LLAPI_LAYOUT_DEFAULT || lsa.lsa_stripe_count == 0)) lsa.lsa_stripe_count = 1; if (lsa.lsa_stripe_count != LLAPI_LAYOUT_DEFAULT) param->lsp_stripe_count = lsa.lsa_stripe_count; if (lsa.lsa_stripe_off == LLAPI_LAYOUT_DEFAULT) - param->lsp_stripe_offset = -1; + param->lsp_stripe_offset = LMV_OFFSET_DEFAULT; else param->lsp_stripe_offset = lsa.lsa_stripe_off; if (lsa.lsa_pattern != LLAPI_LAYOUT_RAID0) -- 1.8.3.1