From 28a4d753b14851ca5d01ee956a2a78d98ae18c21 Mon Sep 17 00:00:00 2001 From: Rama Nichanamatlu Date: Tue, 27 Jun 2017 05:22:46 -0700 Subject: [PATCH] [PATCH] RDS: When RDS socket is closed, print unreleased MR's Improves diagnosability when the requester RDMA operation fails with remote access error. This commit prints RDMA credentials which are prematurely purged by owning process. Signed-off-by: Rama Nichanamatlu Reviewed-by: Avinash Repaka Reviewed-by: Hakon Bugge Orabug: 26276427 --- net/rds/rdma.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/rds/rdma.c b/net/rds/rdma.c index 37b99465ab77..e874c076e896 100644 --- a/net/rds/rdma.c +++ b/net/rds/rdma.c @@ -130,8 +130,10 @@ void rds_rdma_drop_keys(struct rds_sock *rs) struct rds_mr *mr; struct rb_node *node; unsigned long flags; + char name[TASK_COMM_LEN]; /* Release any MRs associated with this socket */ + get_task_comm(name, current); spin_lock_irqsave(&rs->rs_rdma_lock, flags); while ((node = rb_first(&rs->rs_rdma_keys))) { mr = container_of(node, struct rds_mr, r_rb_node); @@ -140,6 +142,10 @@ void rds_rdma_drop_keys(struct rds_sock *rs) rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); RB_CLEAR_NODE(&mr->r_rb_node); spin_unlock_irqrestore(&rs->rs_rdma_lock, flags); + trace_printk("RDS: %s pid %d sk closed. Active MR key: %#x %s %s\n", + name, current->pid, mr->r_key, + mr->r_use_once ? ",use once" : "", + mr->r_invalidate ? ",invalidate" : ""); rds_destroy_mr(mr); rds_mr_put(mr); spin_lock_irqsave(&rs->rs_rdma_lock, flags); -- 2.50.1