Subject: this_cpu: Use it for preempt/non preempt situations These area a couple of more complex scenarios. Signed-off-by: Christoph Lameter --- drivers/dma/dmaengine.c | 8 +------- fs/nfs/iostat.h | 21 +++------------------ 2 files changed, 4 insertions(+), 25 deletions(-) Index: linux-2.6/drivers/dma/dmaengine.c =================================================================== --- linux-2.6.orig/drivers/dma/dmaengine.c 2009-05-28 15:10:31.000000000 -0500 +++ linux-2.6/drivers/dma/dmaengine.c 2009-05-28 15:12:47.000000000 -0500 @@ -326,13 +326,7 @@ arch_initcall(dma_channel_table_init); */ struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type) { - struct dma_chan *chan; - - preempt_disable(); - chan = this_cpu_ptr(channel_table[tx_type])->chan; - preempt_enable(); - - return chan; + return this_cpu_read(channel_table[tx_type])->chan); } EXPORT_SYMBOL(dma_find_channel); Index: linux-2.6/fs/nfs/iostat.h =================================================================== --- linux-2.6.orig/fs/nfs/iostat.h 2009-05-28 15:10:31.000000000 -0500 +++ linux-2.6/fs/nfs/iostat.h 2009-05-28 15:12:47.000000000 -0500 @@ -25,12 +25,7 @@ struct nfs_iostats { static inline void nfs_inc_server_stats(const struct nfs_server *server, enum nfs_stat_eventcounters stat) { - struct nfs_iostats *iostats; - - preempt_disable(); - iostats = this_cpu_ptr(server->io_stats); - iostats->events[stat]++; - preempt_enable_no_resched(); + this_cpu_inc(server->io_stats->events[stat]); } static inline void nfs_inc_stats(const struct inode *inode, @@ -63,12 +53,7 @@ static inline void nfs_add_fscache_stats enum nfs_stat_fscachecounters stat, unsigned long addend) { - struct nfs_iostats *iostats; - - preempt_disable(); - iostats = this_cpu_ptr(NFS_SERVER(inode)->io_stats); - iostats->fscache[stat] += addend; - preempt_enable_no_resched(); + this_cpu_add(NFS_SERVER(inode)->io_stats->fscache[stat], addend); } #endif