Lines Matching refs:rm

68 rdsv3_message_addref(struct rdsv3_message *rm)  in rdsv3_message_addref()  argument
71 rm, atomic_get(&rm->m_refcount)); in rdsv3_message_addref()
72 atomic_inc_32(&rm->m_refcount); in rdsv3_message_addref()
79 rdsv3_message_purge(struct rdsv3_message *rm) in rdsv3_message_purge() argument
83 RDSV3_DPRINTF4("rdsv3_message_purge", "Enter(rm: %p)", rm); in rdsv3_message_purge()
85 if (test_bit(RDSV3_MSG_PAGEVEC, &rm->m_flags)) in rdsv3_message_purge()
88 for (i = 0; i < rm->m_nents; i++) { in rdsv3_message_purge()
90 (void *)rdsv3_sg_page(&rm->m_sg[i])); in rdsv3_message_purge()
92 kmem_free(rdsv3_sg_page(&rm->m_sg[i]), in rdsv3_message_purge()
93 rdsv3_sg_len(&rm->m_sg[i])); in rdsv3_message_purge()
96 if (rm->m_rdma_op) in rdsv3_message_purge()
97 rdsv3_rdma_free_op(rm->m_rdma_op); in rdsv3_message_purge()
98 if (rm->m_rdma_mr) { in rdsv3_message_purge()
99 struct rdsv3_mr *mr = rm->m_rdma_mr; in rdsv3_message_purge()
102 "rm %p mr %p", rm, mr); in rdsv3_message_purge()
107 "rm %p mr %p", rm, mr); in rdsv3_message_purge()
111 rm->m_rdma_mr = NULL; in rdsv3_message_purge()
116 RDSV3_DPRINTF4("rdsv3_message_purge", "Return(rm: %p)", rm); in rdsv3_message_purge()
121 rdsv3_message_put(struct rdsv3_message *rm) in rdsv3_message_put() argument
124 "put rm %p ref %d\n", rm, atomic_get(&rm->m_refcount)); in rdsv3_message_put()
126 if (atomic_dec_and_test(&rm->m_refcount)) { in rdsv3_message_put()
127 ASSERT(!list_link_active(&rm->m_sock_item)); in rdsv3_message_put()
128 ASSERT(!list_link_active(&rm->m_conn_item)); in rdsv3_message_put()
129 rdsv3_message_purge(rm); in rdsv3_message_put()
131 kmem_free(rm, sizeof (struct rdsv3_message) + in rdsv3_message_put()
132 (rm->m_nents * sizeof (struct rdsv3_scatterlist))); in rdsv3_message_put()
139 struct rdsv3_message *rm = in rdsv3_message_inc_free() local
141 rdsv3_message_put(rm); in rdsv3_message_inc_free()
281 struct rdsv3_message *rm; in rdsv3_message_alloc() local
285 rm = kmem_zalloc(sizeof (struct rdsv3_message) + in rdsv3_message_alloc()
287 if (!rm) in rdsv3_message_alloc()
290 rm->m_refcount = 1; in rdsv3_message_alloc()
291 list_link_init(&rm->m_sock_item); in rdsv3_message_alloc()
292 list_link_init(&rm->m_conn_item); in rdsv3_message_alloc()
293 mutex_init(&rm->m_rs_lock, NULL, MUTEX_DRIVER, NULL); in rdsv3_message_alloc()
294 rdsv3_init_waitqueue(&rm->m_flush_wait); in rdsv3_message_alloc()
296 RDSV3_DPRINTF4("rdsv3_message_alloc", "Return(rm: %p)", rm); in rdsv3_message_alloc()
298 return (rm); in rdsv3_message_alloc()
304 struct rdsv3_message *rm; in rdsv3_message_map_pages() local
310 rm = rdsv3_message_alloc(ceil(total_len, PAGE_SIZE), KM_NOSLEEP); in rdsv3_message_map_pages()
312 rm = NULL; in rdsv3_message_map_pages()
314 if (rm == NULL) in rdsv3_message_map_pages()
317 set_bit(RDSV3_MSG_PAGEVEC, &rm->m_flags); in rdsv3_message_map_pages()
318 rm->m_inc.i_hdr.h_len = htonl(total_len); in rdsv3_message_map_pages()
320 rm->m_nents = ceil(total_len, PAGE_SIZE); in rdsv3_message_map_pages()
322 rm->m_nents = 0; in rdsv3_message_map_pages()
325 for (i = 0; i < rm->m_nents; ++i) { in rdsv3_message_map_pages()
326 rdsv3_sg_set_page(&rm->m_sg[i], in rdsv3_message_map_pages()
331 return (rm); in rdsv3_message_map_pages()
338 struct rdsv3_message *rm; in rdsv3_message_copy_from_user() local
345 rm = rdsv3_message_alloc(ceil(total_len, PAGE_SIZE), KM_NOSLEEP); in rdsv3_message_copy_from_user()
347 rm = NULL; in rdsv3_message_copy_from_user()
349 if (rm == NULL) { in rdsv3_message_copy_from_user()
354 rm->m_inc.i_hdr.h_len = htonl(total_len); in rdsv3_message_copy_from_user()
359 sg = rm->m_sg; in rdsv3_message_copy_from_user()
366 rm->m_nents++; in rdsv3_message_copy_from_user()
384 if (rm) in rdsv3_message_copy_from_user()
385 rdsv3_message_put(rm); in rdsv3_message_copy_from_user()
386 rm = ERR_PTR(ret); in rdsv3_message_copy_from_user()
388 return (rm); in rdsv3_message_copy_from_user()
395 struct rdsv3_message *rm; in rdsv3_message_inc_copy_to_user() local
403 rm = __containerof(inc, struct rdsv3_message, m_inc); in rdsv3_message_inc_copy_to_user()
404 len = ntohl(rm->m_inc.i_hdr.h_len); in rdsv3_message_inc_copy_to_user()
407 "Enter(rm: %p, len: %d)", rm, len); in rdsv3_message_inc_copy_to_user()
409 sg = rm->m_sg; in rdsv3_message_inc_copy_to_user()
445 rdsv3_message_wait(struct rdsv3_message *rm) in rdsv3_message_wait() argument
447 rdsv3_wait_event(&rm->m_flush_wait, in rdsv3_message_wait()
448 !test_bit(RDSV3_MSG_MAPPED, &rm->m_flags)); in rdsv3_message_wait()
452 rdsv3_message_unmapped(struct rdsv3_message *rm) in rdsv3_message_unmapped() argument
454 clear_bit(RDSV3_MSG_MAPPED, &rm->m_flags); in rdsv3_message_unmapped()
455 rdsv3_wake_up_all(&rm->m_flush_wait); in rdsv3_message_unmapped()