* Message decoding, parsing and finalizing routines
*
* Copyright (c) 2001-2003 Cluster File Systems, Inc.
- * Copyright (c) 2001-2002 Sandia National Laboratories
*
- * This file is part of Lustre, http://www.sf.net/projects/lustre/
+ * This file is part of Lustre, http://www.lustre.org
*
* Lustre is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#define DEBUG_SUBSYSTEM S_PORTALS
+
#ifndef __KERNEL__
# include <stdio.h>
#else
-# define DEBUG_SUBSYSTEM S_PORTALS
-# include <linux/kp30.h>
+# include <libcfs/kp30.h>
#endif
#include <portals/lib-p30.h>
void
-lib_enq_event_locked (lib_nal_t *nal, void *private,
+lib_enq_event_locked (lib_nal_t *nal, void *private,
lib_eq_t *eq, ptl_event_t *ev)
{
ptl_event_t *eq_slot;
-
- ev->sequence = eq->eq_enq_seq++; /* Allocate the next queue slot */
+
+ /* Allocate the next queue slot */
+ ev->link = ev->sequence = eq->eq_enq_seq++;
+ /* NB we don't support START events yet and we don't create a separate
+ * UNLINK event unless an explicit unlink succeeds, so the link
+ * sequence is pretty useless */
+
+ /* We don't support different uid/jids yet */
+ ev->uid = 0;
+ ev->jid = 0;
/* size must be a power of 2 to handle sequence # overflow */
LASSERT (eq->eq_size != 0 &&
/* Wake anyone sleeping for an event (see lib-eq.c) */
#ifdef __KERNEL__
- if (waitqueue_active(&nal->libnal_ni.ni_waitq))
- wake_up_all(&nal->libnal_ni.ni_waitq);
+ if (cfs_waitq_active(&nal->libnal_ni.ni_waitq))
+ cfs_waitq_broadcast(&nal->libnal_ni.ni_waitq);
#else
pthread_cond_broadcast(&nal->libnal_ni.ni_cond);
#endif
}
-void
+void
lib_finalize (lib_nal_t *nal, void *private, lib_msg_t *msg, ptl_err_t status)
{
lib_md_t *md;
LASSERT(msg->ev.type == PTL_EVENT_PUT_END);
memset (&ack, 0, sizeof (ack));
- ack.type = HTON__u32 (PTL_MSG_ACK);
- ack.dest_nid = HTON__u64 (msg->ev.initiator.nid);
- ack.dest_pid = HTON__u32 (msg->ev.initiator.pid);
- ack.src_nid = HTON__u64 (nal->libnal_ni.ni_pid.nid);
- ack.src_pid = HTON__u32 (nal->libnal_ni.ni_pid.pid);
+ ack.type = cpu_to_le32(PTL_MSG_ACK);
+ ack.dest_nid = cpu_to_le64(msg->ev.initiator.nid);
+ ack.dest_pid = cpu_to_le32(msg->ev.initiator.pid);
+ ack.src_nid = cpu_to_le64(nal->libnal_ni.ni_pid.nid);
+ ack.src_pid = cpu_to_le32(nal->libnal_ni.ni_pid.pid);
ack.payload_length = 0;
ack.msg.ack.dst_wmd = msg->ack_wmd;
ack.msg.ack.match_bits = msg->ev.match_bits;
- ack.msg.ack.mlength = HTON__u32 (msg->ev.mlength);
+ ack.msg.ack.mlength = cpu_to_le32(msg->ev.mlength);
rc = lib_send (nal, private, NULL, &ack, PTL_MSG_ACK,
- msg->ev.initiator.nid, msg->ev.initiator.pid,
+ msg->ev.initiator.nid, msg->ev.initiator.pid,
NULL, 0, 0);
if (rc != PTL_OK) {
/* send failed: there's nothing else to clean up. */
- CERROR("Error %d sending ACK to "LPX64"\n",
+ CERROR("Error %d sending ACK to "LPX64"\n",
rc, msg->ev.initiator.nid);
}
}