Lines Matching defs:rm

67 rdsv3_message_addref(struct rdsv3_message *rm)
69 RDSV3_DPRINTF5("rdsv3_message_addref", "addref rm %p ref %d",
70 rm, atomic_get(&rm->m_refcount));
71 atomic_inc_32(&rm->m_refcount);
78 rdsv3_message_purge(struct rdsv3_message *rm)
82 RDSV3_DPRINTF4("rdsv3_message_purge", "Enter(rm: %p)", rm);
84 if (test_bit(RDSV3_MSG_PAGEVEC, &rm->m_flags))
87 for (i = 0; i < rm->m_nents; i++) {
89 (void *)rdsv3_sg_page(&rm->m_sg[i]));
91 kmem_free(rdsv3_sg_page(&rm->m_sg[i]),
92 rdsv3_sg_len(&rm->m_sg[i]));
95 if (rm->m_rdma_op)
96 rdsv3_rdma_free_op(rm->m_rdma_op);
97 if (rm->m_rdma_mr) {
98 struct rdsv3_mr *mr = rm->m_rdma_mr;
101 "rm %p mr %p", rm, mr);
106 "rm %p mr %p", rm, mr);
110 rm->m_rdma_mr = NULL;
115 RDSV3_DPRINTF4("rdsv3_message_purge", "Return(rm: %p)", rm);
120 rdsv3_message_put(struct rdsv3_message *rm)
123 "put rm %p ref %d\n", rm, atomic_get(&rm->m_refcount));
125 if (atomic_dec_and_test(&rm->m_refcount)) {
126 ASSERT(!list_link_active(&rm->m_sock_item));
127 ASSERT(!list_link_active(&rm->m_conn_item));
128 rdsv3_message_purge(rm);
130 kmem_free(rm, sizeof (struct rdsv3_message) +
131 (rm->m_nents * sizeof (struct rdsv3_scatterlist)));
138 struct rdsv3_message *rm =
140 rdsv3_message_put(rm);
280 struct rdsv3_message *rm;
284 rm = kmem_zalloc(sizeof (struct rdsv3_message) +
286 if (!rm)
289 rm->m_refcount = 1;
290 list_link_init(&rm->m_sock_item);
291 list_link_init(&rm->m_conn_item);
292 mutex_init(&rm->m_rs_lock, NULL, MUTEX_DRIVER, NULL);
293 rdsv3_init_waitqueue(&rm->m_flush_wait);
295 RDSV3_DPRINTF4("rdsv3_message_alloc", "Return(rm: %p)", rm);
297 return (rm);
303 struct rdsv3_message *rm;
309 rm = rdsv3_message_alloc(ceil(total_len, PAGE_SIZE), KM_NOSLEEP);
311 rm = NULL;
313 if (rm == NULL)
316 set_bit(RDSV3_MSG_PAGEVEC, &rm->m_flags);
317 rm->m_inc.i_hdr.h_len = htonl(total_len);
319 rm->m_nents = ceil(total_len, PAGE_SIZE);
321 rm->m_nents = 0;
324 for (i = 0; i < rm->m_nents; ++i) {
325 rdsv3_sg_set_page(&rm->m_sg[i],
330 return (rm);
337 struct rdsv3_message *rm;
344 rm = rdsv3_message_alloc(ceil(total_len, PAGE_SIZE), KM_NOSLEEP);
346 rm = NULL;
348 if (rm == NULL) {
353 rm->m_inc.i_hdr.h_len = htonl(total_len);
358 sg = rm->m_sg;
365 rm->m_nents++;
383 if (rm)
384 rdsv3_message_put(rm);
385 rm = ERR_PTR(ret);
387 return (rm);
394 struct rdsv3_message *rm;
402 rm = container_of(inc, struct rdsv3_message, m_inc);
403 len = ntohl(rm->m_inc.i_hdr.h_len);
406 "Enter(rm: %p, len: %d)", rm, len);
408 sg = rm->m_sg;
444 rdsv3_message_wait(struct rdsv3_message *rm)
446 rdsv3_wait_event(&rm->m_flush_wait,
447 !test_bit(RDSV3_MSG_MAPPED, &rm->m_flags));
451 rdsv3_message_unmapped(struct rdsv3_message *rm)
453 clear_bit(RDSV3_MSG_MAPPED, &rm->m_flags);
454 rdsv3_wake_up_all(&rm->m_flush_wait);