diff options
Diffstat (limited to 'block')
| -rw-r--r-- | block/blk-cgroup.c | 4 | ||||
| -rw-r--r-- | block/cfq-iosched.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 1fa2654db0a6..e7dbbaf5fb3e 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c | |||
| @@ -147,16 +147,16 @@ blkiocg_weight_write(struct cgroup *cgroup, struct cftype *cftype, u64 val) | |||
| 147 | return -EINVAL; | 147 | return -EINVAL; |
| 148 | 148 | ||
| 149 | blkcg = cgroup_to_blkio_cgroup(cgroup); | 149 | blkcg = cgroup_to_blkio_cgroup(cgroup); |
| 150 | spin_lock(&blkio_list_lock); | ||
| 150 | spin_lock_irq(&blkcg->lock); | 151 | spin_lock_irq(&blkcg->lock); |
| 151 | blkcg->weight = (unsigned int)val; | 152 | blkcg->weight = (unsigned int)val; |
| 152 | hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) { | 153 | hlist_for_each_entry(blkg, n, &blkcg->blkg_list, blkcg_node) { |
| 153 | spin_lock(&blkio_list_lock); | ||
| 154 | list_for_each_entry(blkiop, &blkio_list, list) | 154 | list_for_each_entry(blkiop, &blkio_list, list) |
| 155 | blkiop->ops.blkio_update_group_weight_fn(blkg, | 155 | blkiop->ops.blkio_update_group_weight_fn(blkg, |
| 156 | blkcg->weight); | 156 | blkcg->weight); |
| 157 | spin_unlock(&blkio_list_lock); | ||
| 158 | } | 157 | } |
| 159 | spin_unlock_irq(&blkcg->lock); | 158 | spin_unlock_irq(&blkcg->lock); |
| 159 | spin_unlock(&blkio_list_lock); | ||
| 160 | return 0; | 160 | return 0; |
| 161 | } | 161 | } |
| 162 | 162 | ||
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index ee130f14d1fc..17b768d0d42f 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
| @@ -1803,7 +1803,7 @@ static bool cfq_should_idle(struct cfq_data *cfqd, struct cfq_queue *cfqq) | |||
| 1803 | * Otherwise, we do only if they are the last ones | 1803 | * Otherwise, we do only if they are the last ones |
| 1804 | * in their service tree. | 1804 | * in their service tree. |
| 1805 | */ | 1805 | */ |
| 1806 | return service_tree->count == 1; | 1806 | return service_tree->count == 1 && cfq_cfqq_sync(cfqq); |
| 1807 | } | 1807 | } |
| 1808 | 1808 | ||
| 1809 | static void cfq_arm_slice_timer(struct cfq_data *cfqd) | 1809 | static void cfq_arm_slice_timer(struct cfq_data *cfqd) |
