diff mbox series

[V2,1/1] virtio-balloon: fix internal stat name array to match Linux kernel

Message ID 1525895585-79023-2-git-send-email-thomas.tai@oracle.com
State New
Headers show
Series virtio-balloon: fix internal stat name array to match Linux kernel | expand

Commit Message

Thomas Tai May 9, 2018, 7:53 p.m. UTC
The Linux kernel commit b40000325044 ("virtio_balloon: add array
of stat names") defines an array of stat name strings for consumers
of the virtio interface to use via the virtio_balloon.h header
file, rather than requiring each consumer to define its own. But at
present, the stat names defined in this array by the Linux kernel
do not match up with those defined internally by QEMU.

This patch fixes this inconsistency by importing the header file
from linux and use the new macro to construct the balloon_stat_names
array.

Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com>
Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
Cc: Rob Gardner <rob.gardner@oracle.com>
---
 docs/virtio-balloon-stats.txt                   |  2 ++
 hw/virtio/virtio-balloon.c                      | 13 ++-----------
 include/standard-headers/linux/virtio_balloon.h | 19 ++++++++++++++++++-
 3 files changed, 22 insertions(+), 12 deletions(-)

Comments

Stefan Hajnoczi May 10, 2018, 8:18 a.m. UTC | #1
On Wed, May 09, 2018 at 03:53:05PM -0400, Thomas Tai wrote:
> The Linux kernel commit b40000325044 ("virtio_balloon: add array
> of stat names") defines an array of stat name strings for consumers
> of the virtio interface to use via the virtio_balloon.h header
> file, rather than requiring each consumer to define its own. But at
> present, the stat names defined in this array by the Linux kernel
> do not match up with those defined internally by QEMU.
> 
> This patch fixes this inconsistency by importing the header file
> from linux and use the new macro to construct the balloon_stat_names
> array.
> 
> Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com>
> Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
> Cc: Rob Gardner <rob.gardner@oracle.com>
> ---
>  docs/virtio-balloon-stats.txt                   |  2 ++
>  hw/virtio/virtio-balloon.c                      | 13 ++-----------
>  include/standard-headers/linux/virtio_balloon.h | 19 ++++++++++++++++++-
>  3 files changed, 22 insertions(+), 12 deletions(-)
> 
> diff --git a/docs/virtio-balloon-stats.txt b/docs/virtio-balloon-stats.txt
> index 7a66d25..7c69fdb 100644
> --- a/docs/virtio-balloon-stats.txt
> +++ b/docs/virtio-balloon-stats.txt
> @@ -34,6 +34,8 @@ which will return a dictionary containing:
>        - stat-total-memory
>        - stat-available-memory
>        - stat-disk-caches
> +      - stat-hugetlb-allocations
> +      - stat-hugetlb-failures
>  
>    o A key named last-update, which contains the last stats update
>      timestamp in seconds. Since this timestamp is generated by the host,
> diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
> index f456cea..646f2e0 100644
> --- a/hw/virtio/virtio-balloon.c
> +++ b/hw/virtio/virtio-balloon.c
> @@ -43,17 +43,8 @@ static void balloon_page(void *addr, int deflate)
>      }
>  }
>  
> -static const char *balloon_stat_names[] = {
> -   [VIRTIO_BALLOON_S_SWAP_IN] = "stat-swap-in",
> -   [VIRTIO_BALLOON_S_SWAP_OUT] = "stat-swap-out",
> -   [VIRTIO_BALLOON_S_MAJFLT] = "stat-major-faults",
> -   [VIRTIO_BALLOON_S_MINFLT] = "stat-minor-faults",
> -   [VIRTIO_BALLOON_S_MEMFREE] = "stat-free-memory",
> -   [VIRTIO_BALLOON_S_MEMTOT] = "stat-total-memory",
> -   [VIRTIO_BALLOON_S_AVAIL] = "stat-available-memory",
> -   [VIRTIO_BALLOON_S_CACHES] = "stat-disk-caches",
> -   [VIRTIO_BALLOON_S_NR] = NULL
> -};
> +static const char *balloon_stat_names[VIRTIO_BALLOON_S_NR] = \
> +	VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("stat-");
>  
>  /*
>   * reset_stats - Mark all items in the stats array as unset
> diff --git a/include/standard-headers/linux/virtio_balloon.h b/include/standard-headers/linux/virtio_balloon.h
> index 7b0a41b..4dbb7dc 100644
> --- a/include/standard-headers/linux/virtio_balloon.h
> +++ b/include/standard-headers/linux/virtio_balloon.h
> @@ -53,7 +53,24 @@ struct virtio_balloon_config {
>  #define VIRTIO_BALLOON_S_MEMTOT   5   /* Total amount of memory */
>  #define VIRTIO_BALLOON_S_AVAIL    6   /* Available memory as in /proc */
>  #define VIRTIO_BALLOON_S_CACHES   7   /* Disk caches */
> -#define VIRTIO_BALLOON_S_NR       8
> +#define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* Hugetlb page allocations */
> +#define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* Hugetlb page allocation failures */
> +#define VIRTIO_BALLOON_S_NR       10
> +
> +#define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
> +	VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "swap-out", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "major-faults", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "free-memory", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "total-memory", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
> +	VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
> +}
> +
> +#define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
>  
>  /*
>   * Memory statistics structure.
> -- 
> 1.8.3.1
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
> For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
>
Stefan Hajnoczi May 10, 2018, 8:18 a.m. UTC | #2
On Wed, May 09, 2018 at 03:53:05PM -0400, Thomas Tai wrote:
> The Linux kernel commit b40000325044 ("virtio_balloon: add array
> of stat names") defines an array of stat name strings for consumers
> of the virtio interface to use via the virtio_balloon.h header
> file, rather than requiring each consumer to define its own. But at
> present, the stat names defined in this array by the Linux kernel
> do not match up with those defined internally by QEMU.
> 
> This patch fixes this inconsistency by importing the header file
> from linux and use the new macro to construct the balloon_stat_names
> array.
> 
> Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com>
> Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
> Cc: Rob Gardner <rob.gardner@oracle.com>
> ---
>  docs/virtio-balloon-stats.txt                   |  2 ++
>  hw/virtio/virtio-balloon.c                      | 13 ++-----------
>  include/standard-headers/linux/virtio_balloon.h | 19 ++++++++++++++++++-
>  3 files changed, 22 insertions(+), 12 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Thomas Tai May 10, 2018, 12:56 p.m. UTC | #3
On 2018-05-10 04:18 AM, Stefan Hajnoczi wrote:
> On Wed, May 09, 2018 at 03:53:05PM -0400, Thomas Tai wrote:
>> The Linux kernel commit b40000325044 ("virtio_balloon: add array
>> of stat names") defines an array of stat name strings for consumers
>> of the virtio interface to use via the virtio_balloon.h header
>> file, rather than requiring each consumer to define its own. But at
>> present, the stat names defined in this array by the Linux kernel
>> do not match up with those defined internally by QEMU.
>>
>> This patch fixes this inconsistency by importing the header file
>> from linux and use the new macro to construct the balloon_stat_names
>> array.
>>
>> Signed-off-by: Jonathan Helman <jonathan.helman@oracle.com>
>> Signed-off-by: Thomas Tai <thomas.tai@oracle.com>
>> Cc: Rob Gardner <rob.gardner@oracle.com>
>> ---
>>   docs/virtio-balloon-stats.txt                   |  2 ++
>>   hw/virtio/virtio-balloon.c                      | 13 ++-----------
>>   include/standard-headers/linux/virtio_balloon.h | 19 ++++++++++++++++++-
>>   3 files changed, 22 insertions(+), 12 deletions(-)
> 
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> 

Thank you Stefan.

-Thomas
diff mbox series

Patch

diff --git a/docs/virtio-balloon-stats.txt b/docs/virtio-balloon-stats.txt
index 7a66d25..7c69fdb 100644
--- a/docs/virtio-balloon-stats.txt
+++ b/docs/virtio-balloon-stats.txt
@@ -34,6 +34,8 @@  which will return a dictionary containing:
       - stat-total-memory
       - stat-available-memory
       - stat-disk-caches
+      - stat-hugetlb-allocations
+      - stat-hugetlb-failures
 
   o A key named last-update, which contains the last stats update
     timestamp in seconds. Since this timestamp is generated by the host,
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index f456cea..646f2e0 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -43,17 +43,8 @@  static void balloon_page(void *addr, int deflate)
     }
 }
 
-static const char *balloon_stat_names[] = {
-   [VIRTIO_BALLOON_S_SWAP_IN] = "stat-swap-in",
-   [VIRTIO_BALLOON_S_SWAP_OUT] = "stat-swap-out",
-   [VIRTIO_BALLOON_S_MAJFLT] = "stat-major-faults",
-   [VIRTIO_BALLOON_S_MINFLT] = "stat-minor-faults",
-   [VIRTIO_BALLOON_S_MEMFREE] = "stat-free-memory",
-   [VIRTIO_BALLOON_S_MEMTOT] = "stat-total-memory",
-   [VIRTIO_BALLOON_S_AVAIL] = "stat-available-memory",
-   [VIRTIO_BALLOON_S_CACHES] = "stat-disk-caches",
-   [VIRTIO_BALLOON_S_NR] = NULL
-};
+static const char *balloon_stat_names[VIRTIO_BALLOON_S_NR] = \
+	VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("stat-");
 
 /*
  * reset_stats - Mark all items in the stats array as unset
diff --git a/include/standard-headers/linux/virtio_balloon.h b/include/standard-headers/linux/virtio_balloon.h
index 7b0a41b..4dbb7dc 100644
--- a/include/standard-headers/linux/virtio_balloon.h
+++ b/include/standard-headers/linux/virtio_balloon.h
@@ -53,7 +53,24 @@  struct virtio_balloon_config {
 #define VIRTIO_BALLOON_S_MEMTOT   5   /* Total amount of memory */
 #define VIRTIO_BALLOON_S_AVAIL    6   /* Available memory as in /proc */
 #define VIRTIO_BALLOON_S_CACHES   7   /* Disk caches */
-#define VIRTIO_BALLOON_S_NR       8
+#define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* Hugetlb page allocations */
+#define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* Hugetlb page allocation failures */
+#define VIRTIO_BALLOON_S_NR       10
+
+#define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
+	VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
+	VIRTIO_BALLOON_S_NAMES_prefix "swap-out", \
+	VIRTIO_BALLOON_S_NAMES_prefix "major-faults", \
+	VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", \
+	VIRTIO_BALLOON_S_NAMES_prefix "free-memory", \
+	VIRTIO_BALLOON_S_NAMES_prefix "total-memory", \
+	VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
+	VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
+	VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
+	VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
+}
+
+#define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
 
 /*
  * Memory statistics structure.