* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2011, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
cfs_spin_lock(&rpc->crpc_lock);
- if (!crpc->crp_posted || crpc->crp_stamp != 0) {
- /* rpc done or aborted already */
+ 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_status = -EINTR;
+ }
cfs_spin_unlock(&rpc->crpc_lock);
continue;
}
if (console_session.ses_shutdown)
rc = -ESHUTDOWN;
- if (rc != 0) {
+ if (rc != 0 || atomic_read(&trans->tas_remaining) != 0) {
/* treat short timeout as canceled */
if (rc == -ETIMEDOUT && timeout < LST_TRANS_MIN_TIMEOUT * 2)
rc = -EINTR;
lstcon_rpc_trans_stat(lstcon_rpc_trans_t *trans, lstcon_trans_stat_t *stat)
{
lstcon_rpc_t *crpc;
- srpc_client_rpc_t *rpc;
srpc_msg_t *rep;
int error;
lstcon_rpc_t, crp_link) {
lstcon_rpc_stat_total(stat, 1);
- rpc = crpc->crp_rpc;
-
LASSERT (crpc->crp_stamp != 0);
error = lstcon_rpc_get_reply(crpc, &rep);
cfs_list_t *next;
lstcon_rpc_ent_t *ent;
srpc_generic_reply_t *rep;
- srpc_client_rpc_t *rpc;
lstcon_rpc_t *crpc;
srpc_msg_t *msg;
lstcon_node_t *nd;
ent = cfs_list_entry(next, lstcon_rpc_ent_t, rpe_link);
- rpc = crpc->crp_rpc;
-
LASSERT (crpc->crp_stamp != 0);
error = lstcon_rpc_get_reply(crpc, &msg);