From: Rama Nichanamatlu Date: Tue, 27 Jun 2017 12:22:46 +0000 (-0700) Subject: [PATCH] RDS: When RDS socket is closed, print unreleased MR's X-Git-Tag: v4.1.12-105.0.20170705_2000~6 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=28a4d753b14851ca5d01ee956a2a78d98ae18c21;p=users%2Fjedix%2Flinux-maple.git [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 --- 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);