*
*/
-#define DEBUG_SUBSYSTEM S_CLASS
+#define DEBUG_SUBSYSTEM S_RPC
+#include <linux/obd_support.h>
#include <linux/lustre_net.h>
int lustre_pack_msg(int count, int *lens, char **bufs, int *len,
* with the given sub-buffer lengths. */
int lustre_msg_size(int count, int *lengths)
{
- int size, i;
+ int size = 0, i;
for (i = 0; i < count; i++)
size += size_round(lengths[i]);
int lustre_unpack_msg(struct lustre_msg *m, int len)
{
int required_len, i;
+ ENTRY;
required_len = size_round(sizeof(*m));
if (len < required_len)
RETURN(-EINVAL);
m->opc = NTOH__u32(m->opc);
- m->xid = NTOH__u32(m->xid);
m->status = NTOH__u32(m->status);
m->type = NTOH__u32(m->type);
- m->connid = NTOH__u32(m->connid);
m->bufcount = NTOH__u32(m->bufcount);
- m->last_rcvd = NTOH__u64(m->last_rcvd);
+ m->last_xid = NTOH__u64(m->last_xid);
m->last_committed = NTOH__u64(m->last_committed);
required_len = size_round(sizeof(*m) + m->bufcount * sizeof(__u32));
{
int i, offset;
+ if (!m) {
+ CERROR("no message buffer!\n");
+ LBUG();
+ return NULL;
+ }
+
if (n < 0 || n >= m->bufcount) {
- CERROR("referencing bad sub buffer!\n");
+ CERROR("referencing bad sub buffer in %p (want %d, count %d)!\n",
+ m, n, m->bufcount);
LBUG();
return NULL;
}
- if (m->buflens[n] == 0)
+ if (m->buflens[n] == 0) {
+ CERROR("zero-length buffer requested for buffer %d in %p\n", n,
+ m);
return NULL;
+ }
offset = size_round(sizeof(*m) + m->bufcount * sizeof(__u32));