Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 21115
b: refs/heads/master
c: 478a82b
h: refs/heads/master
i:
  21113: 2d5cbb1
  21111: 411fe00
v: v3
  • Loading branch information
Al Viro committed Mar 18, 2006
1 parent 2c03fd7 commit 6970196
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7670876d2d194b2aecb54f397704838eee7d72ee
refs/heads/master: 478a82b0edeea1cc82a5f79880b3a15923a678de
26 changes: 15 additions & 11 deletions trunk/block/cfq-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
struct cfq_data *cfqd = cic->cfqq->cfqd;
struct cfq_data *cfqd = cic->key;
request_queue_t *q = cfqd->queue;

WARN_ON(!irqs_disabled());
Expand All @@ -1224,6 +1224,7 @@ static void cfq_exit_single_io_context(struct cfq_io_context *cic)

cfq_put_queue(cic->cfqq);
cic->cfqq = NULL;
cic->key = NULL;
spin_unlock(q->queue_lock);
}

Expand Down Expand Up @@ -1318,14 +1319,17 @@ static void cfq_init_prio_data(struct cfq_queue *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 = cfqq->cfqd;

struct cfq_data *cfqd = cic->key;
struct cfq_queue *cfqq;
if (cfqd) {
spin_lock(cfqd->queue->queue_lock);
cfq_mark_cfqq_prio_changed(cfqq);
cfq_init_prio_data(cfqq);
cfqq = cic->cfqq;
if (cfqq) {
cfq_mark_cfqq_prio_changed(cfqq);
cfq_init_prio_data(cfqq);
}
spin_unlock(cfqd->queue->queue_lock);
}
}
Expand All @@ -1337,10 +1341,10 @@ static int cfq_ioc_set_ioprio(struct io_context *ioc, unsigned int ioprio)
{
struct cfq_io_context *cic = ioc->cic;

changed_ioprio(cic->cfqq);
changed_ioprio(cic);

list_for_each_entry(cic, &cic->list, list)
changed_ioprio(cic->cfqq);
changed_ioprio(cic);

return 0;
}
Expand Down Expand Up @@ -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
* 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->key = cfqd;
ioc->set_ioprio = cfq_ioc_set_ioprio;
ioc->cic = cic;
} else {
struct cfq_io_context *__cic;

Expand Down

0 comments on commit 6970196

Please sign in to comment.