Commit 478a82b0 authored by Al Viro's avatar Al Viro

[PATCH] switch to use of ->key to get cfq_data by cfq_io_context

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 7670876d
...@@ -1212,7 +1212,7 @@ static void cfq_free_io_context(struct cfq_io_context *cic) ...@@ -1212,7 +1212,7 @@ static void cfq_free_io_context(struct cfq_io_context *cic)
*/ */
static void cfq_exit_single_io_context(struct cfq_io_context *cic) static void cfq_exit_single_io_context(struct cfq_io_context *cic)
{ {
struct cfq_data *cfqd = cic->cfqq->cfqd; struct cfq_data *cfqd = cic->key;
request_queue_t *q = cfqd->queue; request_queue_t *q = cfqd->queue;
WARN_ON(!irqs_disabled()); WARN_ON(!irqs_disabled());
...@@ -1224,6 +1224,7 @@ static void cfq_exit_single_io_context(struct cfq_io_context *cic) ...@@ -1224,6 +1224,7 @@ static void cfq_exit_single_io_context(struct cfq_io_context *cic)
cfq_put_queue(cic->cfqq); cfq_put_queue(cic->cfqq);
cic->cfqq = NULL; cic->cfqq = NULL;
cic->key = NULL;
spin_unlock(q->queue_lock); spin_unlock(q->queue_lock);
} }
...@@ -1318,14 +1319,17 @@ static void cfq_init_prio_data(struct cfq_queue *cfqq) ...@@ -1318,14 +1319,17 @@ static void cfq_init_prio_data(struct cfq_queue *cfqq)
cfq_clear_cfqq_prio_changed(cfqq); cfq_clear_cfqq_prio_changed(cfqq);
} }
static inline void changed_ioprio(struct cfq_queue *cfqq) static inline void changed_ioprio(struct cfq_io_context *cic)
{ {
if (cfqq) { struct cfq_data *cfqd = cic->key;
struct cfq_data *cfqd = cfqq->cfqd; struct cfq_queue *cfqq;
if (cfqd) {
spin_lock(cfqd->queue->queue_lock); spin_lock(cfqd->queue->queue_lock);
cfq_mark_cfqq_prio_changed(cfqq); cfqq = cic->cfqq;
cfq_init_prio_data(cfqq); if (cfqq) {
cfq_mark_cfqq_prio_changed(cfqq);
cfq_init_prio_data(cfqq);
}
spin_unlock(cfqd->queue->queue_lock); spin_unlock(cfqd->queue->queue_lock);
} }
} }
...@@ -1337,10 +1341,10 @@ static int cfq_ioc_set_ioprio(struct io_context *ioc, unsigned int ioprio) ...@@ -1337,10 +1341,10 @@ static int cfq_ioc_set_ioprio(struct io_context *ioc, unsigned int ioprio)
{ {
struct cfq_io_context *cic = ioc->cic; struct cfq_io_context *cic = ioc->cic;
changed_ioprio(cic->cfqq); changed_ioprio(cic);
list_for_each_entry(cic, &cic->list, list) list_for_each_entry(cic, &cic->list, list)
changed_ioprio(cic->cfqq); changed_ioprio(cic);
return 0; return 0;
} }
...@@ -1429,10 +1433,10 @@ cfq_get_io_context(struct cfq_data *cfqd, pid_t pid, gfp_t gfp_mask) ...@@ -1429,10 +1433,10 @@ cfq_get_io_context(struct cfq_data *cfqd, pid_t pid, gfp_t gfp_mask)
* manually increment generic io_context usage count, it * manually increment generic io_context usage count, it
* cannot go away since we are already holding one ref to it * cannot go away since we are already holding one ref to it
*/ */
ioc->cic = cic;
ioc->set_ioprio = cfq_ioc_set_ioprio;
cic->ioc = ioc; cic->ioc = ioc;
cic->key = cfqd; cic->key = cfqd;
ioc->set_ioprio = cfq_ioc_set_ioprio;
ioc->cic = cic;
} else { } else {
struct cfq_io_context *__cic; struct cfq_io_context *__cic;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment