From e17a9489b4a686bb5e9615e1d375c67619cb99c5 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sat, 18 Mar 2006 13:21:20 -0500 Subject: [PATCH] stop elv_unregister() from rogering other iosched's data, fix locking Signed-off-by: Al Viro --- block/cfq-iosched.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'block/cfq-iosched.c') diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 521c56d4fdbc..7102bafc98b3 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c @@ -1211,6 +1211,13 @@ static void cfq_free_io_context(struct cfq_io_context *cic) kmem_cache_free(cfq_ioc_pool, cic); } +static void cfq_trim(struct io_context *ioc) +{ + ioc->set_ioprio = NULL; + if (ioc->cic) + cfq_free_io_context(ioc->cic); +} + /* * Called with interrupts disabled */ @@ -2472,6 +2479,7 @@ static struct elevator_type iosched_cfq = { .elevator_may_queue_fn = cfq_may_queue, .elevator_init_fn = cfq_init_queue, .elevator_exit_fn = cfq_exit_queue, + .trim = cfq_trim, }, .elevator_ktype = &cfq_ktype, .elevator_name = "cfq", -- cgit v1.2.3