Skip to content

Commit

Permalink
RDS: use kfree_rcu in rds_ib_remove_ipaddr
Browse files Browse the repository at this point in the history
synchronize_rcu() slowing down un-necessarily the socket shutdown
path. It is used just kfree() the ip addresses in rds_ib_remove_ipaddr()
which is perfect usecase for kfree_rcu();

So lets use that to gain some speedup.

Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
  • Loading branch information
Santosh Shilimkar authored and Santosh Shilimkar committed Sep 30, 2015
1 parent 6ff33f3 commit 59fe460
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 4 deletions.
1 change: 1 addition & 0 deletions net/rds/ib.h
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ struct rds_ib_connection {
struct rds_ib_ipaddr {
struct list_head list;
__be32 ipaddr;
struct rcu_head rcu;
};

struct rds_ib_device {
Expand Down
6 changes: 2 additions & 4 deletions net/rds/ib_rdma.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,8 @@ static void rds_ib_remove_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr)
}
spin_unlock_irq(&rds_ibdev->spinlock);

if (to_free) {
synchronize_rcu();
kfree(to_free);
}
if (to_free)
kfree_rcu(to_free, rcu);
}

int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr)
Expand Down

0 comments on commit 59fe460

Please sign in to comment.