projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sched/rt: Fix task stack corruption under __ARCH_WANT_INTERRUPTS_ON_CTXSW
[deliverable/linux.git]
/
block
/
blk-sysfs.c
diff --git
a/block/blk-sysfs.c
b/block/blk-sysfs.c
index e7f9f657f10563216be47d8e30ff93acbf4fa312..cf150011d808bc71fee8ff894387de0581235f56 100644
(file)
--- a/
block/blk-sysfs.c
+++ b/
block/blk-sysfs.c
@@
-425,7
+425,7
@@
queue_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
if (!entry->show)
return -EIO;
mutex_lock(&q->sysfs_lock);
if (!entry->show)
return -EIO;
mutex_lock(&q->sysfs_lock);
- if (
test_bit(QUEUE_FLAG_DEAD, &q->queue_flags
)) {
+ if (
blk_queue_dead(q
)) {
mutex_unlock(&q->sysfs_lock);
return -ENOENT;
}
mutex_unlock(&q->sysfs_lock);
return -ENOENT;
}
@@
-447,7
+447,7
@@
queue_attr_store(struct kobject *kobj, struct attribute *attr,
q = container_of(kobj, struct request_queue, kobj);
mutex_lock(&q->sysfs_lock);
q = container_of(kobj, struct request_queue, kobj);
mutex_lock(&q->sysfs_lock);
- if (
test_bit(QUEUE_FLAG_DEAD, &q->queue_flags
)) {
+ if (
blk_queue_dead(q
)) {
mutex_unlock(&q->sysfs_lock);
return -ENOENT;
}
mutex_unlock(&q->sysfs_lock);
return -ENOENT;
}
@@
-479,8
+479,12
@@
static void blk_release_queue(struct kobject *kobj)
blk_sync_queue(q);
blk_sync_queue(q);
- if (q->elevator)
+ if (q->elevator) {
+ spin_lock_irq(q->queue_lock);
+ ioc_clear_queue(q);
+ spin_unlock_irq(q->queue_lock);
elevator_exit(q->elevator);
elevator_exit(q->elevator);
+ }
blk_throtl_exit(q);
blk_throtl_exit(q);
@@
-494,6
+498,8
@@
static void blk_release_queue(struct kobject *kobj)
blk_trace_shutdown(q);
bdi_destroy(&q->backing_dev_info);
blk_trace_shutdown(q);
bdi_destroy(&q->backing_dev_info);
+
+ ida_simple_remove(&blk_queue_ida, q->id);
kmem_cache_free(blk_requestq_cachep, q);
}
kmem_cache_free(blk_requestq_cachep, q);
}
This page took
0.02653 seconds
and
5
git commands to generate.