Release old elevator on change elevator
We should release old elevator when change to use a new one. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
561ec68e4d
commit
68aee07f9b
1 changed files with 7 additions and 1 deletions
|
@ -338,12 +338,18 @@ static void do_blkif_request(struct request_queue *rq)
|
||||||
static int xlvbd_init_blk_queue(struct gendisk *gd, u16 sector_size)
|
static int xlvbd_init_blk_queue(struct gendisk *gd, u16 sector_size)
|
||||||
{
|
{
|
||||||
struct request_queue *rq;
|
struct request_queue *rq;
|
||||||
|
elevator_t *old_e;
|
||||||
|
|
||||||
rq = blk_init_queue(do_blkif_request, &blkif_io_lock);
|
rq = blk_init_queue(do_blkif_request, &blkif_io_lock);
|
||||||
if (rq == NULL)
|
if (rq == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
elevator_init(rq, "noop");
|
old_e = rq->elevator;
|
||||||
|
if (IS_ERR_VALUE(elevator_init(rq, "noop")))
|
||||||
|
printk(KERN_WARNING
|
||||||
|
"blkfront: Switch elevator failed, use default\n");
|
||||||
|
else
|
||||||
|
elevator_exit(old_e);
|
||||||
|
|
||||||
/* Hard sector size and max sectors impersonate the equiv. hardware. */
|
/* Hard sector size and max sectors impersonate the equiv. hardware. */
|
||||||
blk_queue_hardsect_size(rq, sector_size);
|
blk_queue_hardsect_size(rq, sector_size);
|
||||||
|
|
Loading…
Reference in a new issue