Lines Matching refs:mr
70 struct rds_mr *mr; in rds_mr_tree_walk() local
74 mr = rb_entry(parent, struct rds_mr, r_rb_node); in rds_mr_tree_walk()
76 if (key < mr->r_key) in rds_mr_tree_walk()
78 else if (key > mr->r_key) in rds_mr_tree_walk()
81 return mr; in rds_mr_tree_walk()
95 static void rds_destroy_mr(struct rds_mr *mr) in rds_destroy_mr() argument
97 struct rds_sock *rs = mr->r_sock; in rds_destroy_mr()
102 mr->r_key, refcount_read(&mr->r_refcount)); in rds_destroy_mr()
104 if (test_and_set_bit(RDS_MR_DEAD, &mr->r_state)) in rds_destroy_mr()
108 if (!RB_EMPTY_NODE(&mr->r_rb_node)) in rds_destroy_mr()
109 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_destroy_mr()
110 trans_private = mr->r_trans_private; in rds_destroy_mr()
111 mr->r_trans_private = NULL; in rds_destroy_mr()
115 mr->r_trans->free_mr(trans_private, mr->r_invalidate); in rds_destroy_mr()
118 void __rds_put_mr_final(struct rds_mr *mr) in __rds_put_mr_final() argument
120 rds_destroy_mr(mr); in __rds_put_mr_final()
121 kfree(mr); in __rds_put_mr_final()
130 struct rds_mr *mr; in rds_rdma_drop_keys() local
137 mr = rb_entry(node, struct rds_mr, r_rb_node); in rds_rdma_drop_keys()
138 if (mr->r_trans == rs->rs_transport) in rds_rdma_drop_keys()
139 mr->r_invalidate = 0; in rds_rdma_drop_keys()
140 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_rdma_drop_keys()
141 RB_CLEAR_NODE(&mr->r_rb_node); in rds_rdma_drop_keys()
143 rds_destroy_mr(mr); in rds_rdma_drop_keys()
144 rds_mr_put(mr); in rds_rdma_drop_keys()
177 struct rds_mr *mr = NULL, *found; in __rds_rdma_map() local
222 mr = kzalloc(sizeof(struct rds_mr), GFP_KERNEL); in __rds_rdma_map()
223 if (!mr) { in __rds_rdma_map()
228 refcount_set(&mr->r_refcount, 1); in __rds_rdma_map()
229 RB_CLEAR_NODE(&mr->r_rb_node); in __rds_rdma_map()
230 mr->r_trans = rs->rs_transport; in __rds_rdma_map()
231 mr->r_sock = rs; in __rds_rdma_map()
234 mr->r_use_once = 1; in __rds_rdma_map()
236 mr->r_invalidate = 1; in __rds_rdma_map()
238 mr->r_write = 1; in __rds_rdma_map()
274 &mr->r_key, in __rds_rdma_map()
285 mr->r_trans_private = trans_private; in __rds_rdma_map()
288 mr->r_key, (void *)(unsigned long) args->cookie_addr); in __rds_rdma_map()
294 cookie = rds_rdma_make_cookie(mr->r_key, args->vec.addr & ~PAGE_MASK); in __rds_rdma_map()
306 found = rds_mr_tree_walk(&rs->rs_rdma_keys, mr->r_key, mr); in __rds_rdma_map()
309 BUG_ON(found && found != mr); in __rds_rdma_map()
311 rdsdebug("RDS: get_mr key is %x\n", mr->r_key); in __rds_rdma_map()
313 refcount_inc(&mr->r_refcount); in __rds_rdma_map()
314 *mr_ret = mr; in __rds_rdma_map()
320 if (mr) in __rds_rdma_map()
321 rds_mr_put(mr); in __rds_rdma_map()
369 struct rds_mr *mr; in rds_free_mr() local
392 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, rds_rdma_cookie_key(args.cookie), NULL); in rds_free_mr()
393 if (mr) { in rds_free_mr()
394 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_free_mr()
395 RB_CLEAR_NODE(&mr->r_rb_node); in rds_free_mr()
397 mr->r_invalidate = 1; in rds_free_mr()
401 if (!mr) in rds_free_mr()
409 rds_destroy_mr(mr); in rds_free_mr()
410 rds_mr_put(mr); in rds_free_mr()
421 struct rds_mr *mr; in rds_rdma_unuse() local
426 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rds_rdma_unuse()
427 if (!mr) { in rds_rdma_unuse()
434 if (mr->r_use_once || force) { in rds_rdma_unuse()
435 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_rdma_unuse()
436 RB_CLEAR_NODE(&mr->r_rb_node); in rds_rdma_unuse()
444 if (mr->r_trans->sync_mr) in rds_rdma_unuse()
445 mr->r_trans->sync_mr(mr->r_trans_private, DMA_FROM_DEVICE); in rds_rdma_unuse()
450 rds_destroy_mr(mr); in rds_rdma_unuse()
451 rds_mr_put(mr); in rds_rdma_unuse()
732 struct rds_mr *mr; in rds_cmsg_rdma_dest() local
750 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rds_cmsg_rdma_dest()
751 if (!mr) in rds_cmsg_rdma_dest()
754 refcount_inc(&mr->r_refcount); in rds_cmsg_rdma_dest()
757 if (mr) { in rds_cmsg_rdma_dest()
758 mr->r_trans->sync_mr(mr->r_trans_private, DMA_TO_DEVICE); in rds_cmsg_rdma_dest()
759 rm->rdma.op_rdma_mr = mr; in rds_cmsg_rdma_dest()