Loading block/cfq-iosched.c +15 −11 Original line number Original line Diff line number Diff line Loading @@ -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()); Loading @@ -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); } } Loading Loading @@ -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); cfqq = cic->cfqq; if (cfqq) { cfq_mark_cfqq_prio_changed(cfqq); cfq_mark_cfqq_prio_changed(cfqq); cfq_init_prio_data(cfqq); cfq_init_prio_data(cfqq); } spin_unlock(cfqd->queue->queue_lock); spin_unlock(cfqd->queue->queue_lock); } } } } Loading @@ -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; } } Loading Loading @@ -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; Loading Loading
block/cfq-iosched.c +15 −11 Original line number Original line Diff line number Diff line Loading @@ -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()); Loading @@ -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); } } Loading Loading @@ -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); cfqq = cic->cfqq; if (cfqq) { cfq_mark_cfqq_prio_changed(cfqq); cfq_mark_cfqq_prio_changed(cfqq); cfq_init_prio_data(cfqq); cfq_init_prio_data(cfqq); } spin_unlock(cfqd->queue->queue_lock); spin_unlock(cfqd->queue->queue_lock); } } } } Loading @@ -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; } } Loading Loading @@ -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; Loading