[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] make blkfront/blktagp2 respect the elevator=xyz command line option



Should we bother to call elevator_init() at all? The call has been in that
2.6 driver forever, and there's probably no great reason. Shall we just kill
it?

 -- Keir

On 09/10/2009 17:31, "Paolo Bonzini" <pbonzini@xxxxxxxxxx> wrote:

> For some workloads, CFQ has better performance than the no-op scheduler
> that is forced by the blkfront driver.  The only way to set a different
> scheduler is the sysfs interface, because elevator_init is called
> unconditionally.  This patch allows one to use "elevator=cfq" as well.
> 
> While one could argue that the driver's behavior is expected (after all
> "elevator=cfq" is the default and should not have any effect), the
> do-what-I-mean behavior implemented by this patch is more logical.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> ---
>  block/elevator.c             |    3 ++-
>  drivers/xen/blkfront/vbd.c   |   11 ++++++-----
>  drivers/xen/blktap2/device.c |   11 ++++++-----
>  3 files changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/block/elevator.c b/block/elevator.c
> --- a/block/elevator.c
> +++ b/block/elevator.c
> @@ -132,7 +132,8 @@
> eq->elevator_data = data;
>  }
>  
> -static char chosen_elevator[16];
> +char chosen_elevator[16];
> +EXPORT_SYMBOL_GPL(chosen_elevator);
>  
>  static int __init elevator_setup(char *str)
>  {
> diff --git a/drivers/xen/blkfront/vbd.c b/drivers/xen/blkfront/vbd.c
> --- a/drivers/xen/blkfront/vbd.c
> +++ b/drivers/xen/blkfront/vbd.c
> @@ -208,6 +208,8 @@
> /* XXX: release major if 0 */
>  }
>  
> +extern char chosen_elevator[];
> +
>  static int
>  xlvbd_init_blk_queue(struct gendisk *gd, u16 sector_size)
>  {
> @@ -217,11 +219,10 @@
> if (rq == NULL)
> return -1;
>  
> -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
> - elevator_init(rq, "noop");
> -#else
> - elevator_init(rq, &elevator_noop);
> -#endif
> + /* Always respect the user's explicitly chosen elevator, but otherwise
> +    pick a different default than CONFIG_DEFAULT_IOSCHED.  */
> + if (!*chosen_elevator)
> +  elevator_init(rq, "noop");
>  
> /* Hard sector size and max sectors impersonate the equiv. hardware. */
> blk_queue_hardsect_size(rq, sector_size);
> diff --git a/drivers/xen/blktap2/device.c b/drivers/xen/blktap2/device.c
> --- a/drivers/xen/blktap2/device.c
> +++ b/drivers/xen/blktap2/device.c
> @@ -1034,6 +1034,8 @@
> return 0;
>  }
>  
> +extern char chosen_elevator[];
> +
>  int
>  blktap_device_create(struct blktap *tap)
>  {
> @@ -1078,11 +1080,10 @@
> if (!rq)
> goto error;
>  
> -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
> - elevator_init(rq, "noop");
> -#else
> - elevator_init(rq, &elevator_noop);
> -#endif
> + /* Always respect the user's explicitly chosen elevator, but otherwise
> +    pick a different default than CONFIG_DEFAULT_IOSCHED.  */
> + if (!*chosen_elevator)
> +  elevator_init(rq, "noop");
>  
> gd->queue     = rq;
> rq->queuedata = dev;
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.