Whamcloud - gitweb
LU-14339 obdclass: add option %H for jobid 62/41262/3
authorYang Sheng <ys@whamcloud.com>
Mon, 18 Jan 2021 17:46:05 +0000 (01:46 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 25 Jan 2021 19:19:09 +0000 (19:19 +0000)
Add a option %H to avoid jobid too long in some cases.

Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: Iaf70da5de25fd321a21e6e6cd7f7d211dca1adf3
Reviewed-on: https://review.whamcloud.com/41262
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
lustre/obdclass/jobid.c
lustre/tests/sanity.sh

index 2ba4141..e29c51c 100644 (file)
@@ -464,6 +464,7 @@ out:
  *   %e = executable
  *   %g = gid
  *   %h = hostname
  *   %e = executable
  *   %g = gid
  *   %h = hostname
+ *   %H = short hostname
  *   %j = jobid from environment
  *   %p = pid
  *   %u = uid
  *   %j = jobid from environment
  *   %p = pid
  *   %u = uid
@@ -480,7 +481,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid,
        char c;
 
        while ((c = *jobfmt++) && joblen > 1) {
        char c;
 
        while ((c = *jobfmt++) && joblen > 1) {
-               char f;
+               char f, *p;
                int l;
 
                if (isspace(c)) /* Don't allow embedded spaces */
                int l;
 
                if (isspace(c)) /* Don't allow embedded spaces */
@@ -490,6 +491,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid,
                        *jobid = c;
                        joblen--;
                        jobid++;
                        *jobid = c;
                        joblen--;
                        jobid++;
+                       *jobid = '\0';
                        continue;
                }
 
                        continue;
                }
 
@@ -505,6 +507,15 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid,
                        l = snprintf(jobid, joblen, "%s",
                                     init_utsname()->nodename);
                        break;
                        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)
                case 'j': /* jobid stored in process environment */
                        l = jobid_get_from_cache(jobid, joblen);
                        if (l < 0)
index 54ffef7..878796c 100755 (executable)
@@ -16893,6 +16893,13 @@ test_205a() { # Job stats
                verify_jobstats "touch $DIR/$tfile" $SINGLEMDS
        fi
 
                verify_jobstats "touch $DIR/$tfile" $SINGLEMDS
        fi
 
+       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
+
        # test '%j' access to per-session jobid - if supported
        if lctl list_param jobid_this_session > /dev/null 2>&1
        then
        # test '%j' access to per-session jobid - if supported
        if lctl list_param jobid_this_session > /dev/null 2>&1
        then