diff options
| -rw-r--r-- | drivers/block/elevator.c | 10 | ||||
| -rw-r--r-- | drivers/block/ll_rw_blk.c | 4 | ||||
| -rw-r--r-- | drivers/s390/block/dasd.c | 6 | ||||
| -rw-r--r-- | include/linux/elevator.h | 4 |
4 files changed, 13 insertions, 11 deletions
diff --git a/drivers/block/elevator.c b/drivers/block/elevator.c index 9237eec87ba4..0b1517f93501 100644 --- a/drivers/block/elevator.c +++ b/drivers/block/elevator.c @@ -217,9 +217,11 @@ struct request *elevator_noop_next_request(request_queue_t *q) /* * general block -> elevator interface starts here */ -int elevator_init(request_queue_t *q, elevator_t *e, elevator_t type) +int elevator_init(request_queue_t *q, elevator_t *type) { - *e = type; + elevator_t *e = &q->elevator; + + memcpy(e, type, sizeof(*e)); INIT_LIST_HEAD(&q->queue_head); q->last_merge = NULL; @@ -230,8 +232,10 @@ int elevator_init(request_queue_t *q, elevator_t *e, elevator_t type) return 0; } -void elevator_exit(request_queue_t *q, elevator_t *e) +void elevator_exit(request_queue_t *q) { + elevator_t *e = &q->elevator; + if (e->elevator_exit_fn) e->elevator_exit_fn(q, e); } diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 01720fdccb1c..e5a0f98423d2 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -1145,7 +1145,7 @@ void blk_cleanup_queue(request_queue_t * q) if (blk_queue_tagged(q)) blk_queue_free_tags(q); - elevator_exit(q, &q->elevator); + elevator_exit(q); memset(q, 0, sizeof(*q)); } @@ -1227,7 +1227,7 @@ int blk_init_queue(request_queue_t *q, request_fn_proc *rfn, spinlock_t *lock) if (blk_init_free_list(q)) return -ENOMEM; - if ((ret = elevator_init(q, &q->elevator, iosched_deadline))) { + if ((ret = elevator_init(q, &iosched_deadline))) { blk_cleanup_queue(q); return ret; } diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index e9278eec247e..6ae8a0053b0a 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -2046,10 +2046,8 @@ dasd_setup_blkdev(dasd_device_t * device) &device->request_queue_lock); if (rc) return rc; - elevator_exit(device->request_queue, &device->request_queue->elevator); - rc = elevator_init(device->request_queue, - &device->request_queue->elevator, - elevator_noop); + elevator_exit(device->request_queue); + rc = elevator_init(device->request_queue, &elevator_noop); if (rc) { blk_cleanup_queue(device->request_queue); return rc; diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 5c6c7db6e97e..8a54a1c5e5af 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -73,8 +73,8 @@ typedef struct blkelv_ioctl_arg_s { #define BLKELVGET _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t)) #define BLKELVSET _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t)) -extern int elevator_init(request_queue_t *, elevator_t *, elevator_t); -extern void elevator_exit(request_queue_t *, elevator_t *); +extern int elevator_init(request_queue_t *, elevator_t *); +extern void elevator_exit(request_queue_t *); extern inline int bio_rq_in_between(struct bio *, struct request *, struct list_head *); extern inline int elv_rq_merge_ok(struct request *, struct bio *); extern inline int elv_try_merge(struct request *, struct bio *); |
