From 78e1aecd5305fe76c093421fd192b3df853ff0f6 Mon Sep 17 00:00:00 2001 From: Yang Sheng Date: Tue, 19 Jan 2021 01:46:05 +0800 Subject: [PATCH] LU-14339 obdclass: add option %H for jobid Add a option %H to avoid jobid too long in some cases. Lustre-change: https://review.whamcloud.com/41262 Lustre-commit: cf72ee174bbf7e60301ddff211b0685dc6c7adab Signed-off-by: Yang Sheng Change-Id: Iaf70da5de25fd321a21e6e6cd7f7d211dca1adf3 Reviewed-by: Andreas Dilger Reviewed-by: Jian Yu Signed-off-by: Etienne AUJAMES Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50375 Tested-by: jenkins Tested-by: Maloo --- lustre/obdclass/jobid.c | 13 ++++++++++++- lustre/tests/sanity.sh | 7 +++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lustre/obdclass/jobid.c b/lustre/obdclass/jobid.c index b7a08d4..fc3ac27 100644 --- a/lustre/obdclass/jobid.c +++ b/lustre/obdclass/jobid.c @@ -304,6 +304,7 @@ out: * %e = executable * %g = gid * %h = hostname + * %H = short hostname * %j = jobid from environment * %p = pid * %u = uid @@ -320,7 +321,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid, char c; while ((c = *jobfmt++) && joblen > 1) { - char f; + char f, *p; int l; if (isspace(c)) /* Don't allow embedded spaces */ @@ -330,6 +331,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid, *jobid = c; joblen--; jobid++; + *jobid = '\0'; continue; } @@ -345,6 +347,15 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid, l = snprintf(jobid, joblen, "%s", init_utsname()->nodename); break; + case 'H': /* short hostname. Cut at first dot */ + l = snprintf(jobid, joblen, "%s", + init_utsname()->nodename); + p = strnchr(jobid, joblen, '.'); + if (p) { + *p = '\0'; + l = p - jobid; + } + break; case 'j': /* jobid stored in process environment */ l = jobid_get_from_cache(jobid, joblen); if (l < 0) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index ac0d38c..5b29047 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -15405,6 +15405,13 @@ test_205a() { # Job stats JOBCOMPLEX="S.$USER.touch.$(id -u).$(hostname).E" verify_jobstats "touch $DIR/$tfile" $SINGLEMDS + + if lctl set_param jobid_var=USER jobid_name="S.%j.%e.%u.%H.E"; then + JOBENV="JOBCOMPLEX" + JOBCOMPLEX="S.$USER.touch.$(id -u).$(hostname -s).E" + + verify_jobstats "touch $DIR/$tfile" $SINGLEMDS + fi } run_test 205a "Verify job stats" -- 1.8.3.1