diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-20 13:28:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-20 13:28:51 -0500 |
commit | a90779bfc83b7489270a8ce2c3fc9df20dac2b24 (patch) | |
tree | 53a41d0e419024619c621facb2baf6e782e16f35 /include/linux | |
parent | 7705a8792b0fc82fd7d4dd923724606bbfd9fb20 (diff) | |
parent | e572ec7e4e432de7ecf7bd2e62117646fa64e518 (diff) |
Merge branch 'block-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/block
* 'block-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/block:
[PATCH] fix rmmod problems with elevator attributes, clean them up
[PATCH] elevator_t lifetime rules and sysfs fixes
[PATCH] noise removal: cfq-iosched.c
[PATCH] don't bother with refcounting for cfq_data
[PATCH] fix sysfs interaction and lifetime rules handling for queues
[PATCH] regularize blk_cleanup_queue() use
[PATCH] fix cfq_get_queue()/ioprio_set(2) races
[PATCH] deal with rmmod/put_io_context() races
[PATCH] stop elv_unregister() from rogering other iosched's data, fix locking
[PATCH] stop cfq from pinning queue down
[PATCH] make cfq_exit_queue() prune the cfq_io_context for that queue
[PATCH] fix the exclusion for ioprio_set()
[PATCH] keep sync and async cfq_queue separate
[PATCH] switch to use of ->key to get cfq_data by cfq_io_context
[PATCH] stop leaking cfq_data in cfq_set_request()
[PATCH] fix cfq hash lookups
[PATCH] fix locking in queue_requests_store()
[PATCH] fix double-free in blk_init_queue_node()
[PATCH] don't do exit_io_context() until we know we won't be doing any IO
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blkdev.h | 10 | ||||
-rw-r--r-- | include/linux/elevator.h | 10 |
2 files changed, 15 insertions, 5 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 860e7a485a5f..56bb6a4e15f3 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -58,7 +58,7 @@ struct cfq_io_context { | |||
58 | * circular list of cfq_io_contexts belonging to a process io context | 58 | * circular list of cfq_io_contexts belonging to a process io context |
59 | */ | 59 | */ |
60 | struct list_head list; | 60 | struct list_head list; |
61 | struct cfq_queue *cfqq; | 61 | struct cfq_queue *cfqq[2]; |
62 | void *key; | 62 | void *key; |
63 | 63 | ||
64 | struct io_context *ioc; | 64 | struct io_context *ioc; |
@@ -69,6 +69,8 @@ struct cfq_io_context { | |||
69 | unsigned long ttime_samples; | 69 | unsigned long ttime_samples; |
70 | unsigned long ttime_mean; | 70 | unsigned long ttime_mean; |
71 | 71 | ||
72 | struct list_head queue_list; | ||
73 | |||
72 | void (*dtor)(struct cfq_io_context *); | 74 | void (*dtor)(struct cfq_io_context *); |
73 | void (*exit)(struct cfq_io_context *); | 75 | void (*exit)(struct cfq_io_context *); |
74 | }; | 76 | }; |
@@ -404,8 +406,6 @@ struct request_queue | |||
404 | 406 | ||
405 | struct blk_queue_tag *queue_tags; | 407 | struct blk_queue_tag *queue_tags; |
406 | 408 | ||
407 | atomic_t refcnt; | ||
408 | |||
409 | unsigned int nr_sorted; | 409 | unsigned int nr_sorted; |
410 | unsigned int in_flight; | 410 | unsigned int in_flight; |
411 | 411 | ||
@@ -424,6 +424,8 @@ struct request_queue | |||
424 | struct request pre_flush_rq, bar_rq, post_flush_rq; | 424 | struct request pre_flush_rq, bar_rq, post_flush_rq; |
425 | struct request *orig_bar_rq; | 425 | struct request *orig_bar_rq; |
426 | unsigned int bi_size; | 426 | unsigned int bi_size; |
427 | |||
428 | struct mutex sysfs_lock; | ||
427 | }; | 429 | }; |
428 | 430 | ||
429 | #define RQ_INACTIVE (-1) | 431 | #define RQ_INACTIVE (-1) |
@@ -725,7 +727,7 @@ extern long nr_blockdev_pages(void); | |||
725 | int blk_get_queue(request_queue_t *); | 727 | int blk_get_queue(request_queue_t *); |
726 | request_queue_t *blk_alloc_queue(gfp_t); | 728 | request_queue_t *blk_alloc_queue(gfp_t); |
727 | request_queue_t *blk_alloc_queue_node(gfp_t, int); | 729 | request_queue_t *blk_alloc_queue_node(gfp_t, int); |
728 | #define blk_put_queue(q) blk_cleanup_queue((q)) | 730 | extern void blk_put_queue(request_queue_t *); |
729 | 731 | ||
730 | /* | 732 | /* |
731 | * tag stuff | 733 | * tag stuff |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 18cf1f3e1184..ad133fcfb239 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -48,10 +48,17 @@ struct elevator_ops | |||
48 | 48 | ||
49 | elevator_init_fn *elevator_init_fn; | 49 | elevator_init_fn *elevator_init_fn; |
50 | elevator_exit_fn *elevator_exit_fn; | 50 | elevator_exit_fn *elevator_exit_fn; |
51 | void (*trim)(struct io_context *); | ||
51 | }; | 52 | }; |
52 | 53 | ||
53 | #define ELV_NAME_MAX (16) | 54 | #define ELV_NAME_MAX (16) |
54 | 55 | ||
56 | struct elv_fs_entry { | ||
57 | struct attribute attr; | ||
58 | ssize_t (*show)(elevator_t *, char *); | ||
59 | ssize_t (*store)(elevator_t *, const char *, size_t); | ||
60 | }; | ||
61 | |||
55 | /* | 62 | /* |
56 | * identifies an elevator type, such as AS or deadline | 63 | * identifies an elevator type, such as AS or deadline |
57 | */ | 64 | */ |
@@ -60,7 +67,7 @@ struct elevator_type | |||
60 | struct list_head list; | 67 | struct list_head list; |
61 | struct elevator_ops ops; | 68 | struct elevator_ops ops; |
62 | struct elevator_type *elevator_type; | 69 | struct elevator_type *elevator_type; |
63 | struct kobj_type *elevator_ktype; | 70 | struct elv_fs_entry *elevator_attrs; |
64 | char elevator_name[ELV_NAME_MAX]; | 71 | char elevator_name[ELV_NAME_MAX]; |
65 | struct module *elevator_owner; | 72 | struct module *elevator_owner; |
66 | }; | 73 | }; |
@@ -74,6 +81,7 @@ struct elevator_queue | |||
74 | void *elevator_data; | 81 | void *elevator_data; |
75 | struct kobject kobj; | 82 | struct kobject kobj; |
76 | struct elevator_type *elevator_type; | 83 | struct elevator_type *elevator_type; |
84 | struct mutex sysfs_lock; | ||
77 | }; | 85 | }; |
78 | 86 | ||
79 | /* | 87 | /* |