summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorFabio Checconi <fabio@gandalf.sssup.i>2008-04-02 14:31:02 +0200
committerJens Axboe <jens.axboe@oracle.com>2008-04-02 15:42:20 +0200
commit34e6bbf23c8f43e8713d9bd092680f1660494b4a (patch)
tree908e97ac3d43882cb42bf57c41926852d3bc2f6e /include/linux
parent00d61e3e8c12d5f395b167856d2b3c430816afb0 (diff)
cfq-iosched: fix rcu freeing of cfq io contexts
SLAB_DESTROY_BY_RCU is not a direct substitute for normal call_rcu() freeing, since it'll page freeing but NOT object freeing. So change cfq to do the freeing on its own. Signed-off-by: Fabio Checconi <fabio@gandalf.sssup.it> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/iocontext.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h
index 1b4ccf25b4d..cac4b364cd4 100644
--- a/include/linux/iocontext.h
+++ b/include/linux/iocontext.h
@@ -2,6 +2,7 @@
#define IOCONTEXT_H
#include <linux/radix-tree.h>
+#include <linux/rcupdate.h>
/*
* This is the per-process anticipatory I/O scheduler state.
@@ -54,6 +55,8 @@ struct cfq_io_context {
void (*dtor)(struct io_context *); /* destructor */
void (*exit)(struct io_context *); /* called on task exit */
+
+ struct rcu_head rcu_head;
};
/*