- time64_t t;
- int c; /* connected */
- int i; /* in progress */
- int k; /* known */
- int s; /* stale/evicted */
-
- c = atomic_read(&target->obd_connected_clients);
- i = atomic_read(&target->obd_lock_replay_clients);
- k = target->obd_max_recoverable_clients;
- s = target->obd_stale_clients;
- t = target->obd_recovery_timer.expires;
- t = cfs_duration_sec(target->obd_recovery_timer.expires);
- t -= ktime_get_seconds();
- LCONSOLE_WARN("%s: Denying connection for new client %s"
- "(at %s), waiting for %d known clients "
- "(%d recovered, %d in progress, and %d "
- "evicted) to recover in %lld:%.02lld\n",
+ struct hrtimer *timer = &target->obd_recovery_timer;
+ ktime_t remaining;
+ s64 timeout, left;
+ int in_progress;
+ int connected;
+ int known;
+ int stale;
+ char *msg;
+
+ connected = atomic_read(&target->obd_connected_clients);
+ in_progress = atomic_read(&target->obd_lock_replay_clients);
+ known = target->obd_max_recoverable_clients;
+ stale = target->obd_stale_clients;
+ remaining = hrtimer_expires_remaining(timer);
+ left = ktime_divns(remaining, NSEC_PER_SEC);
+ if (ktime_to_ns(remaining) > 0) {
+ msg = "to recover in";
+ timeout = left;
+ } else {
+ msg = "already passed deadline";
+ timeout = -left;
+ }
+
+ LCONSOLE_WARN("%s: Denying connection for new client %s (at %s), waiting for %d known clients (%d recovered, %d in progress, and %d evicted) %s %lld:%.02lld\n",