qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>, qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v1 2/2] ide: support reporting of rotation rate
Date: Wed, 4 Oct 2017 11:57:58 -0400	[thread overview]
Message-ID: <8ac64a27-8e89-d131-b388-8ac557ab5ce6@redhat.com> (raw)
In-Reply-To: <20171004114008.14849-3-berrange@redhat.com>



On 10/04/2017 07:40 AM, Daniel P. Berrange wrote:
> The Linux kernel will query the ATA IDENTITY DEVICE data, word 217
> to determine the rotations per minute of the disk. If this has
> the value 1, it is taken to be an SSD and so Linux sets the
> 'rotational' flag to 0 for the I/O queue and will stop using that
> disk as a source of random entropy. Other operating systems may
> also take into account rotation rate when setting up default
> behaviour.
> 
> Mgmt apps should be able to set the rotation rate for virtualized
> block devices, based on characteristics of the host storage in use,
> so that the guest OS gets sensible behaviour out of the box. This
> patch thus adds a 'rotation-rate' parameter for 'ide-hd' device
> types.
> 
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
>  hw/ide/core.c             | 1 +
>  hw/ide/qdev.c             | 1 +
>  include/hw/ide/internal.h | 8 ++++++++
>  3 files changed, 10 insertions(+)
> 
> diff --git a/hw/ide/core.c b/hw/ide/core.c
> index 5f1cd3b91f..a04766aee7 100644
> --- a/hw/ide/core.c
> +++ b/hw/ide/core.c
> @@ -208,6 +208,7 @@ static void ide_identify(IDEState *s)
>      if (dev && dev->conf.discard_granularity) {
>          put_le16(p + 169, 1); /* TRIM support */
>      }
> +    put_le16(p + 217, dev->rotation_rate); /* Nominal media rotation rate */
>  
>      ide_identify_size(s);
>      s->identify_set = 1;
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index d60ac25be0..a5181b4448 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -299,6 +299,7 @@ static Property ide_hd_properties[] = {
>      DEFINE_BLOCK_CHS_PROPERTIES(IDEDrive, dev.conf),
>      DEFINE_PROP_BIOS_CHS_TRANS("bios-chs-trans",
>                  IDEDrive, dev.chs_trans, BIOS_ATA_TRANSLATION_AUTO),
> +    DEFINE_PROP_UINT16("rotation_rate", IDEDrive, dev.rotation_rate, 0),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
> index e641012b48..31851b44d1 100644
> --- a/include/hw/ide/internal.h
> +++ b/include/hw/ide/internal.h
> @@ -508,6 +508,14 @@ struct IDEDevice {
>      char *serial;
>      char *model;
>      uint64_t wwn;
> +    /*
> +     * 0x0000        - rotation rate not reported
> +     * 0x0001        - non-rotating medium (SSD)
> +     * 0x0002-0x0400 - reserved
> +     * 0x0401-0xffe  - rotations per minute
> +     * 0xffff        - reserved
> +     */
> +    uint16_t rotation_rate;
>  };
>  
>  /* These are used for the error_status field of IDEBus */
> 

With Eric's comment addressed:

Reviewed-by: John Snow <jsnow@redhat.com>

It'd be nice if we could have a magic autodetect value, but this is a
strict improvement anyway.

(Actually, probably most of the identify data needs to be audited, but
the perceived cost:benefit ratio doesn't look too favorable.)

  parent reply	other threads:[~2017-10-04 15:58 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-04 11:40 [Qemu-devel] [PATCH v1 0/2] Reporting of rotation rate for disks Daniel P. Berrange
2017-10-04 11:40 ` [Qemu-devel] [PATCH v1 1/2] scsi-disk: support reporting of rotation rate Daniel P. Berrange
2017-10-04 15:44   ` Eric Blake
2017-10-04 16:49   ` Dr. David Alan Gilbert
2017-10-04 16:56     ` Daniel P. Berrange
2017-10-04 11:40 ` [Qemu-devel] [PATCH v1 2/2] ide: " Daniel P. Berrange
2017-10-04 15:45   ` Eric Blake
2017-10-04 15:57   ` John Snow [this message]
2017-10-20  8:42   ` Kevin Wolf
2017-10-20  9:02     ` Daniel P. Berrange
2017-10-23 17:17       ` John Snow
2017-10-04 12:19 ` [Qemu-devel] [PATCH v1 0/2] Reporting of rotation rate for disks Daniel P. Berrange
2017-10-10 10:18 ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8ac64a27-8e89-d131-b388-8ac557ab5ce6@redhat.com \
    --to=jsnow@redhat.com \
    --cc=berrange@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).