/* not an orphan RPC */
crpc->crp_finished = 1;
- if (crpc->crp_stamp == 0) {
+ if (crpc->crp_stamp_ns == 0) {
/* not aborted */
- LASSERT (crpc->crp_status == 0);
+ LASSERT(crpc->crp_status == 0);
- crpc->crp_stamp = cfs_time_current();
+ crpc->crp_stamp_ns = ktime_get_ns();
crpc->crp_status = rpc->crpc_status;
}
int bulk_npg, int bulk_len, int embedded,
struct lstcon_rpc *crpc)
{
+ memset(crpc, 0, sizeof(*crpc));
+
crpc->crp_rpc = sfw_create_rpc(nd->nd_id, service,
feats, bulk_npg, bulk_len,
lstcon_rpc_done, (void *)crpc);
if (crpc->crp_rpc == NULL)
return -ENOMEM;
- crpc->crp_trans = NULL;
crpc->crp_node = nd;
- crpc->crp_posted = 0;
- crpc->crp_finished = 0;
- crpc->crp_unpacked = 0;
- crpc->crp_status = 0;
- crpc->crp_stamp = 0;
crpc->crp_embedded = embedded;
INIT_LIST_HEAD(&crpc->crp_link);
spin_lock(&rpc->crpc_lock);
if (!crpc->crp_posted || /* not posted */
- crpc->crp_stamp != 0) { /* rpc done or aborted already */
- if (crpc->crp_stamp == 0) {
- crpc->crp_stamp = cfs_time_current();
+ crpc->crp_stamp_ns != 0) { /* rpc done or aborted already */
+ if (crpc->crp_stamp_ns == 0) {
+ crpc->crp_stamp_ns = ktime_get_ns();
crpc->crp_status = -EINTR;
}
spin_unlock(&rpc->crpc_lock);
continue;
}
- crpc->crp_stamp = cfs_time_current();
+ crpc->crp_stamp_ns = ktime_get_ns();
crpc->crp_status = error;
spin_unlock(&rpc->crpc_lock);
continue;
nd = crpc->crp_node;
- if (cfs_time_after(nd->nd_stamp, crpc->crp_stamp))
+ if (ktime_to_ns(nd->nd_stamp) > crpc->crp_stamp_ns)
continue;
- nd->nd_stamp = crpc->crp_stamp;
+ nd->nd_stamp = ktime_set(0, crpc->crp_stamp_ns);
nd->nd_state = LST_NODE_DOWN;
}
}
struct srpc_client_rpc *rpc = crpc->crp_rpc;
struct srpc_generic_reply *rep;
- LASSERT (nd != NULL && rpc != NULL);
- LASSERT (crpc->crp_stamp != 0);
+ LASSERT(nd != NULL && rpc != NULL);
+ LASSERT(crpc->crp_stamp_ns != 0);
if (crpc->crp_status != 0) {
*msgpp = NULL;
crpc->crp_unpacked = 1;
}
- if (cfs_time_after(nd->nd_stamp, crpc->crp_stamp))
- return 0;
+ if (ktime_to_ns(nd->nd_stamp) > crpc->crp_stamp_ns)
+ return 0;
- nd->nd_stamp = crpc->crp_stamp;
- rep = &(*msgpp)->msg_body.reply;
+ nd->nd_stamp = ktime_set(0, crpc->crp_stamp_ns);
+ rep = &(*msgpp)->msg_body.reply;
if (rep->sid.ses_nid == LNET_NID_ANY)
nd->nd_state = LST_NODE_UNKNOWN;
list_for_each_entry(crpc, &trans->tas_rpcs_list, crp_link) {
lstcon_rpc_stat_total(stat, 1);
- LASSERT(crpc->crp_stamp != 0);
+ LASSERT(crpc->crp_stamp_ns != 0);
error = lstcon_rpc_get_reply(crpc, &rep);
if (error != 0) {
struct lstcon_rpc *crpc;
struct srpc_msg *msg;
struct lstcon_node *nd;
- cfs_duration_t dur;
struct timeval tv;
int error;
+ s64 dur;
LASSERT(head_up != NULL);
ent = list_entry(next, struct lstcon_rpc_ent, rpe_link);
- LASSERT(crpc->crp_stamp != 0);
+ LASSERT(crpc->crp_stamp_ns != 0);
- error = lstcon_rpc_get_reply(crpc, &msg);
+ error = lstcon_rpc_get_reply(crpc, &msg);
- nd = crpc->crp_node;
+ nd = crpc->crp_node;
- dur = (cfs_duration_t)cfs_time_sub(crpc->crp_stamp,
- (cfs_time_t)console_session.ses_id.ses_stamp);
- jiffies_to_timeval(dur, &tv);
+ dur = crpc->crp_stamp_ns -
+ console_session.ses_id.ses_stamp * NSEC_PER_MSEC;
+ tv = ns_to_timeval(dur);
if (copy_to_user(&ent->rpe_peer,
&nd->nd_id, sizeof(struct lnet_process_id)) ||
lstcon_rpc_put(crpc);
}
- if (nd->nd_state != LST_NODE_ACTIVE)
- continue;
+ if (nd->nd_state != LST_NODE_ACTIVE)
+ continue;
- intv = cfs_duration_sec(jiffies - nd->nd_stamp);
+ intv = ktime_ms_delta(ktime_get(), nd->nd_stamp) / MSEC_PER_SEC;
if (intv < nd->nd_timeout / 2)
- continue;
+ continue;
rc = lstcon_rpc_init(nd, SRPC_SERVICE_DEBUG,
trans->tas_features, 0, 0, 1, crpc);
ndl = (struct lstcon_ndlink *)(*ndpp + 1);
- ndl->ndl_node = *ndpp;
+ ndl->ndl_node = *ndpp;
- ndl->ndl_node->nd_ref = 1;
- ndl->ndl_node->nd_id = id;
- ndl->ndl_node->nd_stamp = cfs_time_current();
- ndl->ndl_node->nd_state = LST_NODE_UNKNOWN;
- ndl->ndl_node->nd_timeout = 0;
+ ndl->ndl_node->nd_ref = 1;
+ ndl->ndl_node->nd_id = id;
+ ndl->ndl_node->nd_stamp = ktime_get();
+ ndl->ndl_node->nd_state = LST_NODE_UNKNOWN;
+ ndl->ndl_node->nd_timeout = 0;
memset(&ndl->ndl_node->nd_ping, 0, sizeof(ndl->ndl_node->nd_ping));
/* queued in global hash & list, no refcount is taken by
{
struct lnet_process_id id;
- LASSERT (console_session.ses_state == LST_SESSION_NONE);
+ LASSERT(console_session.ses_state == LST_SESSION_NONE);
- LNetGetId(1, &id);
- sid->ses_nid = id.nid;
- sid->ses_stamp = cfs_time_current();
+ LNetGetId(1, &id);
+ sid->ses_nid = id.nid;
+ sid->ses_stamp = ktime_get_ns() / NSEC_PER_MSEC;
}
int
atomic_set(&sn->sn_ping_errors, 0);
strlcpy(&sn->sn_name[0], name, sizeof(sn->sn_name));
- sn->sn_timer_active = 0;
- sn->sn_id = sid;
- sn->sn_features = features;
- sn->sn_timeout = session_timeout;
- sn->sn_started = cfs_time_current();
-
- timer->stt_data = sn;
- timer->stt_func = sfw_session_expired;
+ sn->sn_timer_active = 0;
+ sn->sn_id = sid;
+ sn->sn_features = features;
+ sn->sn_timeout = session_timeout;
+ sn->sn_started = ktime_get();
+
+ timer->stt_data = sn;
+ timer->stt_func = sfw_session_expired;
INIT_LIST_HEAD(&timer->stt_list);
}
/* send over the msecs since the session was started
- with 32 bits to send, this is ~49 days */
- cnt->running_ms = jiffies_to_msecs(jiffies - sn->sn_started);
- cnt->brw_errors = atomic_read(&sn->sn_brw_errors);
- cnt->ping_errors = atomic_read(&sn->sn_ping_errors);
+ cnt->running_ms = ktime_ms_delta(ktime_get(), sn->sn_started);
+ cnt->brw_errors = atomic_read(&sn->sn_brw_errors);
+ cnt->ping_errors = atomic_read(&sn->sn_ping_errors);
cnt->zombie_sessions = atomic_read(&sfw_data.fw_nzombies);
cnt->active_batches = 0;
static struct st_timer_data {
spinlock_t stt_lock;
/* start time of the slot processed previously */
- cfs_time_t stt_prev_slot;
+ time64_t stt_prev_slot;
struct list_head stt_hash[STTIMER_NSLOTS];
int stt_shuttingdown;
wait_queue_head_t stt_waitq;
}
static int
-stt_check_timers(cfs_time_t *last)
+stt_check_timers(time64_t *last)
{
int expired = 0;
time64_t now;
- cfs_time_t this_slot;
+ time64_t this_slot;
now = ktime_get_real_seconds();
- this_slot = now & STTIMER_SLOTTIMEMASK;
+ this_slot = now & STTIMER_SLOTTIMEMASK;
spin_lock(&stt_data.stt_lock);
- while (cfs_time_aftereq(this_slot, *last)) {
+ while (this_slot >= *last) {
expired += stt_expire_list(STTIMER_SLOT(this_slot), now);
- this_slot = cfs_time_sub(this_slot, STTIMER_SLOTTIME);
+ this_slot = this_slot - STTIMER_SLOTTIME;
}
*last = now & STTIMER_SLOTTIMEMASK;