net: rds: use this_cpu_* per-cpu helper
Subsystems (3)
PATCH v4 2/9 net: rds: use this_cpu_* per-cpu helper
From: Shan Wei <[email protected]>
Signed-off-by Shan Wei <[email protected]>
Reviewed-by Christoph Lameter <[email protected]>
---
v4:
1. add missing __percpu annotations.
2. [read|write]ing fields of struct rds_ib_cache_head using __this_cpu_* operation, drop per_cpu_ptr.
--- net/rds/ib.h | 2 +- net/rds/ib_recv.c | 24 +++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-)
net/rds/ib.h +1 -1
@@ -50,7 +50,7 @@ struct rds_ib_cache_head { };struct rds_ib_refill_cache { -struct rds_ib_cache_head *percpu; +struct rds_ib_cache_head __percpu *percpu;struct list_head *xfer;struct list_head *ready; };
net/rds/ib_recv.c +13 -11
@@ -418,20 +418,21 @@ static void rds_ib_recv_cache_put(struct list_head *new_item, struct rds_ib_refill_cache *cache) {unsigned long flags; -struct rds_ib_cache_head *chp;struct list_head *old; +struct list_head __percpu *chpfirst;local_irq_save (flags); - chp =per_cpu_ptr (cache->percpu,smp_processor_id ()); -if (!chp->first) + chpfirst =__this_cpu_read (cache->percpu->first); +if (!chpfirst)INIT_LIST_HEAD (new_item);else /* put on front */ -list_add_tail (new_item, chp->first); - chp->first = new_item; - chp->count++; +list_add_tail (new_item, chpfirst); -if (chp->count <RDS_IB_RECYCLE_BATCH_COUNT ) +__this_cpu_write (chpfirst, new_item); +__this_cpu_inc (cache->percpu->count); + +if (__this_cpu_read (cache->percpu->count) <RDS_IB_RECYCLE_BATCH_COUNT ) goto end;/*
@@ -443,12 +444,13 @@ static void rds_ib_recv_cache_put(struct list_head *new_item,do { old =xchg (&cache->xfer,NULL );if (old) -list_splice_entire_tail (old, chp->first); - old =cmpxchg (&cache->xfer,NULL , chp->first); +list_splice_entire_tail (old, chpfirst); + old =cmpxchg (&cache->xfer,NULL , chpfirst); }while (old); - chp->first =NULL ; - chp->count =0 ; + +__this_cpu_write (chpfirst,NULL ); +__this_cpu_write (cache->percpu->count,0 ); end:local_irq_restore (flags); }
Signature · 1 line
1.7.1
Shan Wei said, at 2012/11/13 9:52:
Quoted 5 lines
From: Shan Wei <[email protected]>
Signed-off-by Shan Wei <[email protected]>Reviewed-by Christoph Lameter <[email protected]>
David Miller, would you like to pick it up to your net-next tree?
Quoted 75 lines
---
v4:
1. add missing__percpuannotations.
2. [read|write]ing fields of structrds_ib_cache_headusing __this_cpu_* operation, dropper_cpu_ptr.--- net/rds/ib.h | 2 +- net/rds/ib_recv.c | 24 +++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-)net/rds/ib.h +1
-1@@ -50,7 +50,7 @@ struct rds_ib_cache_head { };struct rds_ib_refill_cache { -struct rds_ib_cache_head *percpu; +struct rds_ib_cache_head __percpu *percpu;struct list_head *xfer;struct list_head *ready; };net/rds/ib_recv.c +13
-11@@ -418,20 +418,21 @@ static void rds_ib_recv_cache_put(struct list_head *new_item, struct rds_ib_refill_cache *cache) {unsigned long flags; -struct rds_ib_cache_head *chp;struct list_head *old; +struct list_head __percpu *chpfirst;local_irq_save (flags); - chp =per_cpu_ptr (cache->percpu,smp_processor_id ()); -if (!chp->first) + chpfirst =__this_cpu_read (cache->percpu->first); +if (!chpfirst)INIT_LIST_HEAD (new_item);else /* put on front */ -list_add_tail (new_item, chp->first); - chp->first = new_item; - chp->count++; +list_add_tail (new_item, chpfirst); -if (chp->count <RDS_IB_RECYCLE_BATCH_COUNT ) +__this_cpu_write (chpfirst, new_item); +__this_cpu_inc (cache->percpu->count); + +if (__this_cpu_read (cache->percpu->count) <RDS_IB_RECYCLE_BATCH_COUNT ) goto end;/* @@ -443,12 +444,13 @@ static void rds_ib_recv_cache_put(struct list_head *new_item,do { old =xchg (&cache->xfer,NULL );if (old) -list_splice_entire_tail (old, chp->first); - old =cmpxchg (&cache->xfer,NULL , chp->first); +list_splice_entire_tail (old, chpfirst); + old =cmpxchg (&cache->xfer,NULL , chpfirst); }while (old); - chp->first =NULL ; - chp->count =0 ; + +__this_cpu_write (chpfirst,NULL ); +__this_cpu_write (cache->percpu->count,0 ); end:local_irq_restore (flags); }
From: Shan Wei <[email protected]>
Date: Fri, 16 Nov 2012 16:38:33 +0800
Quoted 8 lines
Shan Wei said, at 2012/11/13 9:52:
Quoted 5 lines
From: Shan Wei <[email protected]>
Signed-off-by Shan Wei <[email protected]>Reviewed-by Christoph Lameter <[email protected]>David Miller, would you like to pick it up to your net-next tree?
Applied.