Whamcloud - gitweb
LU-6142 mdt: Fix style issues for mdt_recovery.c
[fs/lustre-release.git] / lustre / obdclass / jobid.c
index 58f03b3..868f19d 100644 (file)
@@ -33,9 +33,7 @@
 
 #define DEBUG_SUBSYSTEM S_RPC
 #include <linux/user_namespace.h>
-#ifdef HAVE_UIDGID_HEADER
 #include <linux/uidgid.h>
-#endif
 #include <linux/utsname.h>
 
 #include <libcfs/libcfs.h>
@@ -221,14 +219,13 @@ static void jobid_prune_expedite(void)
  */
 int jobid_get_from_environ(char *jobid_var, char *jobid, int *jobid_len)
 {
-       static bool printed;
        int rc;
 
        rc = cfs_get_environ(jobid_var, jobid, jobid_len);
        if (!rc)
                goto out;
 
-       if (unlikely(rc == -EOVERFLOW && !printed)) {
+       if (rc == -EOVERFLOW) {
                /* For the PBS_JOBID and LOADL_STEP_ID keys (which are
                 * variable length strings instead of just numbers), it
                 * might make sense to keep the unique parts for JobID,
@@ -236,16 +233,23 @@ int jobid_get_from_environ(char *jobid_var, char *jobid, int *jobid_len)
                 * larger temp buffer for cfs_get_environ(), then
                 * truncating the string at some separator to fit into
                 * the specified jobid_len.  Fix later if needed. */
-               LCONSOLE_WARN("jobid: '%s' value too large (%d)\n",
-                             obd_jobid_var, *jobid_len);
-               printed = true;
+               static ktime_t printed;
+
+               if (unlikely(ktime_to_ns(printed) == 0 ||
+                            ktime_after(ktime_get(),
+                                        ktime_add_ns(printed,
+                                                     3600*24*NSEC_PER_SEC)))) {
+                       LCONSOLE_WARN("jobid: '%s' value too large (%d)\n",
+                                     obd_jobid_var, *jobid_len);
+                       printed = ktime_get();
+               }
+
                rc = 0;
-       }
-       if (rc) {
-               CDEBUG((rc == -ENOENT || rc == -EINVAL ||
-                       rc == -EDEADLK) ? D_INFO : D_ERROR,
-                      "jobid: get '%s' failed: rc = %d\n",
-                      obd_jobid_var, rc);
+       } else {
+               CDEBUG_LIMIT((rc == -ENOENT || rc == -EINVAL ||
+                             rc == -EDEADLK) ? D_INFO : D_ERROR,
+                            "jobid: get '%s' failed: rc = %d\n",
+                            obd_jobid_var, rc);
        }
 
 out:
@@ -330,7 +334,7 @@ static int jobid_get_from_cache(char *jobid, size_t joblen)
 {
        static time64_t last_expire;
        bool expire_cache = false;
-       pid_t pid = current_pid();
+       pid_t pid = current->pid;
        struct jobid_pid_map *pidmap = NULL;
        time64_t now = ktime_get_real_seconds();
        int rc = 0;
@@ -491,7 +495,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid,
 
                switch ((f = *jobfmt++)) {
                case 'e': /* executable name */
-                       l = snprintf(jobid, joblen, "%s", current_comm());
+                       l = snprintf(jobid, joblen, "%s", current->comm);
                        break;
                case 'g': /* group ID */
                        l = snprintf(jobid, joblen, "%u",
@@ -507,7 +511,7 @@ static int jobid_interpret_string(const char *jobfmt, char *jobid,
                                l = 0;
                        break;
                case 'p': /* process ID */
-                       l = snprintf(jobid, joblen, "%u", current_pid());
+                       l = snprintf(jobid, joblen, "%u", current->pid);
                        break;
                case 'u': /* user ID */
                        l = snprintf(jobid, joblen, "%u",
@@ -701,7 +705,7 @@ int lustre_get_jobid(char *jobid, size_t joblen)
                if (jid)
                        strlcpy(jobid, jid, sizeof(jobid));
                rcu_read_unlock();
-       } else if (jobid_name_is_valid(current_comm())) {
+       } else if (jobid_name_is_valid(current->comm)) {
                /*
                 * obd_jobid_var holds the jobid environment variable name.
                 * Skip initial check if obd_jobid_name already uses "%j",