Lines Matching defs:mr

59  *  - should we limit the size of a mr region?  let transport return failure?
88 struct rdsv3_mr *mr;
91 mr = avl_find(root, &key, &where);
92 if ((mr == NULL) && (insert != NULL)) {
98 return (mr);
105 rdsv3_destroy_mr(struct rdsv3_mr *mr)
107 struct rdsv3_sock *rs = mr->r_sock;
112 "RDS: destroy mr key is %x refcnt %u",
113 mr->r_key, atomic_get(&mr->r_refcount));
115 if (test_and_set_bit(RDSV3_MR_DEAD, &mr->r_state))
119 np = &mr->r_rb_node;
121 avl_remove(&rs->rs_rdma_keys, mr);
122 trans_private = mr->r_trans_private;
123 mr->r_trans_private = NULL;
127 mr->r_trans->free_mr(trans_private, mr->r_invalidate);
131 __rdsv3_put_mr_final(struct rdsv3_mr *mr)
133 rdsv3_destroy_mr(mr);
134 kmem_free(mr, sizeof (*mr));
144 struct rdsv3_mr *mr;
150 mr = container_of(node, struct rdsv3_mr, r_rb_node);
151 if (mr->r_trans == rs->rs_transport)
152 mr->r_invalidate = 0;
153 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node);
154 RB_CLEAR_NODE(&mr->r_rb_node)
156 rdsv3_destroy_mr(mr);
157 rdsv3_mr_put(mr);
170 struct rdsv3_mr *mr = NULL, *found;
186 mr = kmem_zalloc(sizeof (struct rdsv3_mr), KM_NOSLEEP);
187 if (!mr) {
192 mr->r_refcount = 1;
193 RB_CLEAR_NODE(&mr->r_rb_node);
194 mr->r_trans = rs->rs_transport;
195 mr->r_sock = rs;
198 mr->r_use_once = 1;
200 mr->r_invalidate = 1;
202 mr->r_write = 1;
211 &mr->r_key);
218 mr->r_trans_private = trans_private;
226 cookie = rdsv3_rdma_make_cookie(mr->r_key, args->vec.addr & ~PAGEMASK);
244 "RDS: get_mr mr 0x%p addr 0x%llx key 0x%x",
245 mr, args->vec.addr, mr->r_key);
251 found = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, mr->r_key, mr);
254 ASSERT(!(found && found != mr));
257 atomic_inc_32(&mr->r_refcount);
258 *mr_ret = mr;
263 if (mr)
264 rdsv3_mr_put(mr);
324 struct rdsv3_mr *mr;
352 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys,
354 if (mr) {
355 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node);
356 RB_CLEAR_NODE(&mr->r_rb_node);
358 mr->r_invalidate = 1;
362 if (!mr)
370 rdsv3_destroy_mr(mr);
371 rdsv3_mr_put(mr);
383 struct rdsv3_mr *mr;
389 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL);
390 if (!mr) {
397 if (mr->r_use_once || force) {
398 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node);
399 RB_CLEAR_NODE(&mr->r_rb_node);
402 atomic_inc_32(&mr->r_refcount);
411 if (mr->r_trans->sync_mr)
412 mr->r_trans->sync_mr(mr->r_trans_private, DMA_FROM_DEVICE);
419 rdsv3_destroy_mr(mr);
420 rdsv3_mr_put(mr);
617 struct rdsv3_mr *mr;
637 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL);
638 if (!mr)
641 atomic_inc_32(&mr->r_refcount);
644 if (mr) {
645 mr->r_trans->sync_mr(mr->r_trans_private, DMA_TO_DEVICE);
646 rm->m_rdma_mr = mr;