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 |
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 >
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>
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 --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.