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, kref_read(&mr->r_kref)); in rds_destroy_mr()
105 if (!RB_EMPTY_NODE(&mr->r_rb_node)) in rds_destroy_mr()
106 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_destroy_mr()
107 trans_private = mr->r_trans_private; in rds_destroy_mr()
108 mr->r_trans_private = NULL; in rds_destroy_mr()
112 mr->r_trans->free_mr(trans_private, mr->r_invalidate); in rds_destroy_mr()
117 struct rds_mr *mr = container_of(kref, struct rds_mr, r_kref); in __rds_put_mr_final() local
119 rds_destroy_mr(mr); in __rds_put_mr_final()
120 kfree(mr); in __rds_put_mr_final()
129 struct rds_mr *mr; in rds_rdma_drop_keys() local
136 mr = rb_entry(node, struct rds_mr, r_rb_node); in rds_rdma_drop_keys()
137 if (mr->r_trans == rs->rs_transport) in rds_rdma_drop_keys()
138 mr->r_invalidate = 0; in rds_rdma_drop_keys()
139 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_rdma_drop_keys()
140 RB_CLEAR_NODE(&mr->r_rb_node); in rds_rdma_drop_keys()
142 kref_put(&mr->r_kref, __rds_put_mr_final); in rds_rdma_drop_keys()
176 struct rds_mr *mr = NULL, *found; in __rds_rdma_map() local
237 mr = kzalloc(sizeof(struct rds_mr), GFP_KERNEL); in __rds_rdma_map()
238 if (!mr) { in __rds_rdma_map()
243 kref_init(&mr->r_kref); in __rds_rdma_map()
244 RB_CLEAR_NODE(&mr->r_rb_node); in __rds_rdma_map()
245 mr->r_trans = rs->rs_transport; in __rds_rdma_map()
246 mr->r_sock = rs; in __rds_rdma_map()
249 mr->r_use_once = 1; in __rds_rdma_map()
251 mr->r_invalidate = 1; in __rds_rdma_map()
253 mr->r_write = 1; in __rds_rdma_map()
291 sg, nents, rs, &mr->r_key, cp ? cp->cp_conn : NULL, in __rds_rdma_map()
307 mr->r_trans_private = trans_private; in __rds_rdma_map()
310 mr->r_key, (void *)(unsigned long) args->cookie_addr); in __rds_rdma_map()
317 cookie = rds_rdma_make_cookie(mr->r_key, 0); in __rds_rdma_map()
319 cookie = rds_rdma_make_cookie(mr->r_key, in __rds_rdma_map()
337 found = rds_mr_tree_walk(&rs->rs_rdma_keys, mr->r_key, mr); in __rds_rdma_map()
340 BUG_ON(found && found != mr); in __rds_rdma_map()
342 rdsdebug("RDS: get_mr key is %x\n", mr->r_key); in __rds_rdma_map()
344 kref_get(&mr->r_kref); in __rds_rdma_map()
345 *mr_ret = mr; in __rds_rdma_map()
351 if (mr) in __rds_rdma_map()
352 kref_put(&mr->r_kref, __rds_put_mr_final); in __rds_rdma_map()
399 struct rds_mr *mr; in rds_free_mr() local
421 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, rds_rdma_cookie_key(args.cookie), NULL); in rds_free_mr()
422 if (mr) { in rds_free_mr()
423 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_free_mr()
424 RB_CLEAR_NODE(&mr->r_rb_node); in rds_free_mr()
426 mr->r_invalidate = 1; in rds_free_mr()
430 if (!mr) in rds_free_mr()
433 kref_put(&mr->r_kref, __rds_put_mr_final); in rds_free_mr()
444 struct rds_mr *mr; in rds_rdma_unuse() local
449 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rds_rdma_unuse()
450 if (!mr) { in rds_rdma_unuse()
460 kref_get(&mr->r_kref); in rds_rdma_unuse()
465 if (mr->r_use_once || force) { in rds_rdma_unuse()
466 rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); in rds_rdma_unuse()
467 RB_CLEAR_NODE(&mr->r_rb_node); in rds_rdma_unuse()
475 if (mr->r_trans->sync_mr) in rds_rdma_unuse()
476 mr->r_trans->sync_mr(mr->r_trans_private, DMA_FROM_DEVICE); in rds_rdma_unuse()
479 kref_put(&mr->r_kref, __rds_put_mr_final); in rds_rdma_unuse()
484 kref_put(&mr->r_kref, __rds_put_mr_final); in rds_rdma_unuse()
812 struct rds_mr *mr; in rds_cmsg_rdma_dest() local
830 mr = rds_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rds_cmsg_rdma_dest()
831 if (!mr) in rds_cmsg_rdma_dest()
834 kref_get(&mr->r_kref); in rds_cmsg_rdma_dest()
837 if (mr) { in rds_cmsg_rdma_dest()
838 mr->r_trans->sync_mr(mr->r_trans_private, in rds_cmsg_rdma_dest()
840 rm->rdma.op_rdma_mr = mr; in rds_cmsg_rdma_dest()