diff options
| author | Jens Axboe <jens.axboe@oracle.com> | 2007-04-26 08:41:53 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@nelson.home.kernel.dk> | 2007-04-30 03:08:17 -0400 |
| commit | 2a12dcd71a5e0667b33f7b47bcac95c71d551840 (patch) | |
| tree | 8e0a8cb3eeef023bade8217693b289e5db22a846 | |
| parent | 5972511b77809cb7c9ccdb79b825c54921c5c546 (diff) | |
[PATCH] elevator: elv_list_lock does not need irq disabling
It's never grabbed from irq context, so just make it plain spin_lock().
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
| -rw-r--r-- | block/elevator.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/block/elevator.c b/block/elevator.c index 96a00c822748..ce866eb75f6a 100644 --- a/block/elevator.c +++ b/block/elevator.c | |||
| @@ -134,13 +134,13 @@ static struct elevator_type *elevator_get(const char *name) | |||
| 134 | { | 134 | { |
| 135 | struct elevator_type *e; | 135 | struct elevator_type *e; |
| 136 | 136 | ||
| 137 | spin_lock_irq(&elv_list_lock); | 137 | spin_lock(&elv_list_lock); |
| 138 | 138 | ||
| 139 | e = elevator_find(name); | 139 | e = elevator_find(name); |
| 140 | if (e && !try_module_get(e->elevator_owner)) | 140 | if (e && !try_module_get(e->elevator_owner)) |
| 141 | e = NULL; | 141 | e = NULL; |
| 142 | 142 | ||
| 143 | spin_unlock_irq(&elv_list_lock); | 143 | spin_unlock(&elv_list_lock); |
| 144 | 144 | ||
| 145 | return e; | 145 | return e; |
| 146 | } | 146 | } |
| @@ -965,10 +965,11 @@ void elv_unregister_queue(struct request_queue *q) | |||
| 965 | int elv_register(struct elevator_type *e) | 965 | int elv_register(struct elevator_type *e) |
| 966 | { | 966 | { |
| 967 | char *def = ""; | 967 | char *def = ""; |
| 968 | spin_lock_irq(&elv_list_lock); | 968 | |
| 969 | spin_lock(&elv_list_lock); | ||
| 969 | BUG_ON(elevator_find(e->elevator_name)); | 970 | BUG_ON(elevator_find(e->elevator_name)); |
| 970 | list_add_tail(&e->list, &elv_list); | 971 | list_add_tail(&e->list, &elv_list); |
| 971 | spin_unlock_irq(&elv_list_lock); | 972 | spin_unlock(&elv_list_lock); |
| 972 | 973 | ||
| 973 | if (!strcmp(e->elevator_name, chosen_elevator) || | 974 | if (!strcmp(e->elevator_name, chosen_elevator) || |
| 974 | (!*chosen_elevator && | 975 | (!*chosen_elevator && |
| @@ -998,9 +999,9 @@ void elv_unregister(struct elevator_type *e) | |||
| 998 | read_unlock(&tasklist_lock); | 999 | read_unlock(&tasklist_lock); |
| 999 | } | 1000 | } |
| 1000 | 1001 | ||
| 1001 | spin_lock_irq(&elv_list_lock); | 1002 | spin_lock(&elv_list_lock); |
| 1002 | list_del_init(&e->list); | 1003 | list_del_init(&e->list); |
| 1003 | spin_unlock_irq(&elv_list_lock); | 1004 | spin_unlock(&elv_list_lock); |
| 1004 | } | 1005 | } |
| 1005 | EXPORT_SYMBOL_GPL(elv_unregister); | 1006 | EXPORT_SYMBOL_GPL(elv_unregister); |
| 1006 | 1007 | ||
| @@ -1118,7 +1119,7 @@ ssize_t elv_iosched_show(request_queue_t *q, char *name) | |||
| 1118 | struct list_head *entry; | 1119 | struct list_head *entry; |
| 1119 | int len = 0; | 1120 | int len = 0; |
| 1120 | 1121 | ||
| 1121 | spin_lock_irq(&elv_list_lock); | 1122 | spin_lock(&elv_list_lock); |
| 1122 | list_for_each(entry, &elv_list) { | 1123 | list_for_each(entry, &elv_list) { |
| 1123 | struct elevator_type *__e; | 1124 | struct elevator_type *__e; |
| 1124 | 1125 | ||
| @@ -1128,7 +1129,7 @@ ssize_t elv_iosched_show(request_queue_t *q, char *name) | |||
| 1128 | else | 1129 | else |
| 1129 | len += sprintf(name+len, "%s ", __e->elevator_name); | 1130 | len += sprintf(name+len, "%s ", __e->elevator_name); |
| 1130 | } | 1131 | } |
| 1131 | spin_unlock_irq(&elv_list_lock); | 1132 | spin_unlock(&elv_list_lock); |
| 1132 | 1133 | ||
| 1133 | len += sprintf(len+name, "\n"); | 1134 | len += sprintf(len+name, "\n"); |
| 1134 | return len; | 1135 | return len; |
