return (nob);
}
+EXPORT_SYMBOL(lnet_iov_nob);
void
lnet_copy_iov2iov (unsigned int ndiov, struct iovec *diov, unsigned int doffset,
}
} while (nob > 0);
}
+EXPORT_SYMBOL(lnet_copy_iov2iov);
int
lnet_extract_iov (int dst_niov, struct iovec *dst,
offset = 0;
}
}
+EXPORT_SYMBOL(lnet_extract_iov);
#ifndef __KERNEL__
unsigned int
return (nob);
}
+EXPORT_SYMBOL(lnet_kiov_nob);
void
lnet_copy_kiov2kiov (unsigned int ndiov, lnet_kiov_t *diov, unsigned int doffset,
if (saddr != NULL)
cfs_kunmap(siov->kiov_page);
}
+EXPORT_SYMBOL(lnet_copy_kiov2kiov);
void
lnet_copy_kiov2iov (unsigned int niov, struct iovec *iov, unsigned int iovoffset,
if (addr != NULL)
cfs_kunmap(kiov->kiov_page);
}
+EXPORT_SYMBOL(lnet_copy_kiov2iov);
void
lnet_copy_iov2kiov (unsigned int nkiov, lnet_kiov_t *kiov, unsigned int kiovoffset,
if (addr != NULL)
cfs_kunmap(kiov->kiov_page);
}
+EXPORT_SYMBOL(lnet_copy_iov2kiov);
int
lnet_extract_kiov (int dst_niov, lnet_kiov_t *dst,
offset = 0;
}
}
+EXPORT_SYMBOL(lnet_extract_kiov);
#endif
void
LASSERT(src_nid != LNET_NID_ANY);
lnet_msg_commit(msg, cpt);
- if (!msg->msg_routing)
- msg->msg_hdr.src_nid = cpu_to_le64(src_nid);
+ if (!msg->msg_routing)
+ msg->msg_hdr.src_nid = cpu_to_le64(src_nid);
- if (src_ni == the_lnet.ln_loni) {
- /* No send credit hassles with LOLND */
+ if (src_ni == the_lnet.ln_loni) {
+ /* No send credit hassles with LOLND */
lnet_net_unlock(cpt);
lnet_ni_send(src_ni, msg);
lnet_build_msg_event(msg, LNET_EVENT_PUT);
- /* Must I ACK? If so I'll grab the ack_wmd out of the header and put
- * it back into the ACK during lnet_finalize() */
+ /* Must I ACK? If so I'll grab the ack_wmd out of the header and put
+ * it back into the ACK during lnet_finalize() */
msg->msg_ack = (!lnet_is_wire_handle_none(&hdr->msg.put.ack_wmd) &&
(msg->msg_md->md_options & LNET_MD_ACK_DISABLE) == 0);
rc = lnet_send(ni->ni_nid, msg, LNET_NID_ANY);
if (rc < 0) {
/* didn't get as far as lnet_ni_send() */
- CERROR("%s: Unable to send REPLY for GET from %s: %d\n",
+ CERROR("%s: Unable to send REPLY for GET from %s: %d\n",
libcfs_nid2str(ni->ni_nid),
libcfs_id2str(info.mi_id), rc);
return ("<UNKNOWN>");
}
}
+EXPORT_SYMBOL(lnet_msgtyp2str);
void
lnet_print_hdr(lnet_hdr_t * hdr)
lnet_drop_message(ni, cpt, private, payload_length);
return 0;
}
+EXPORT_SYMBOL(lnet_parse);
void
lnet_drop_delayed_msg_list(cfs_list_t *head, char *reason)
lnet_drop_message(msg->msg_rxpeer->lp_ni,
msg->msg_rxpeer->lp_cpt,
msg->msg_private, msg->msg_len);
-
- lnet_net_lock(msg->msg_rxpeer->lp_cpt);
- lnet_peer_decref_locked(msg->msg_rxpeer);
- lnet_net_unlock(msg->msg_rxpeer->lp_cpt);
-
- lnet_msg_free(msg);
+ /*
+ * NB: message will not generate event because w/o attached MD,
+ * but we still should give error code so lnet_msg_decommit()
+ * can skip counters operations and other checks.
+ */
+ lnet_finalize(msg->msg_rxpeer->lp_ni, msg, -ENOENT);
}
}
/* completion will be signalled by an event */
return 0;
}
+EXPORT_SYMBOL(LNetPut);
lnet_msg_t *
lnet_create_reply_msg (lnet_ni_t *ni, lnet_msg_t *getmsg)
return NULL;
}
+EXPORT_SYMBOL(lnet_create_reply_msg);
void
lnet_set_reply_msg_len(lnet_ni_t *ni, lnet_msg_t *reply, unsigned int len)
reply->msg_ev.mlength = len;
}
+EXPORT_SYMBOL(lnet_set_reply_msg_len);
/**
* Initiate an asynchronous GET operation.
* \retval -ENOENT Invalid MD object.
*/
int
-LNetGet(lnet_nid_t self, lnet_handle_md_t mdh,
- lnet_process_id_t target, unsigned int portal,
- __u64 match_bits, unsigned int offset)
+LNetGet(lnet_nid_t self, lnet_handle_md_t mdh,
+ lnet_process_id_t target, unsigned int portal,
+ __u64 match_bits, unsigned int offset)
{
struct lnet_msg *msg;
struct lnet_libmd *md;
/* completion will be signalled by an event */
return 0;
}
+EXPORT_SYMBOL(LNetGet);
/**
* Calculate distance to node at \a dstnid.
lnet_net_unlock(cpt);
return -EHOSTUNREACH;
}
+EXPORT_SYMBOL(LNetDist);
/**
* Set the number of asynchronous messages expected from a target process.
return rc;
#endif
}
+EXPORT_SYMBOL(LNetSetAsync);