From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Wei Liu <wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH v1 2/4] tmem: Wrap atomic_t in struct tmem_statistics as well.
Date: Thu, 2 Jun 2016 11:04:18 -0400 [thread overview]
Message-ID: <1464879860-25554-3-git-send-email-konrad.wilk@oracle.com> (raw)
In-Reply-To: <1464879860-25554-1-git-send-email-konrad.wilk@oracle.com>
The macros: atomic_inc_and_max and atomic_dec_and_assert
use also the 'stats' to access them. Had to open-code
access to pool->pgp_count as it would not work anymore.
No functional change.
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Doug Goldstein <cardoe@cardoe.com>
---
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wei.liu2@citrix.com>
Cc: Doug Goldstein <cardoe@cardoe.com>
v1: First posting as non-RFC
---
xen/common/tmem.c | 57 +++++++++++++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 25 deletions(-)
diff --git a/xen/common/tmem.c b/xen/common/tmem.c
index d362eae..b58ab4d 100644
--- a/xen/common/tmem.c
+++ b/xen/common/tmem.c
@@ -51,9 +51,32 @@ struct tmem_statistics {
unsigned long failed_copies;
unsigned long pcd_tot_tze_size;
unsigned long pcd_tot_csize;
+ /* Global counters (should use long_atomic_t access). */
+ atomic_t global_obj_count;
+ atomic_t global_pgp_count;
+ atomic_t global_pcd_count;
+ atomic_t global_page_count;
+ atomic_t global_rtree_node_count;
};
-static struct tmem_statistics tmem_stats;
+#define atomic_inc_and_max(_c) do { \
+ atomic_inc(&tmem_stats._c); \
+ if ( _atomic_read(tmem_stats._c) > tmem_stats._c##_max ) \
+ tmem_stats._c##_max = _atomic_read(tmem_stats._c); \
+} while (0)
+
+#define atomic_dec_and_assert(_c) do { \
+ atomic_dec(&tmem_stats._c); \
+ ASSERT(_atomic_read(tmem_stats._c) >= 0); \
+} while (0)
+
+static struct tmem_statistics tmem_stats = {
+ .global_obj_count = ATOMIC_INIT(0),
+ .global_pgp_count = ATOMIC_INIT(0),
+ .global_pcd_count = ATOMIC_INIT(0),
+ .global_page_count = ATOMIC_INIT(0),
+ .global_rtree_node_count = ATOMIC_INIT(0),
+};
/************ CORE DATA STRUCTURES ************************************/
@@ -222,24 +245,7 @@ static DEFINE_SPINLOCK(pers_lists_spinlock);
#define ASSERT_SPINLOCK(_l) ASSERT(spin_is_locked(_l))
#define ASSERT_WRITELOCK(_l) ASSERT(rw_is_write_locked(_l))
-/* Global counters (should use long_atomic_t access). */
-static long global_eph_count = 0; /* Atomicity depends on eph_lists_spinlock. */
-static atomic_t global_obj_count = ATOMIC_INIT(0);
-static atomic_t global_pgp_count = ATOMIC_INIT(0);
-static atomic_t global_pcd_count = ATOMIC_INIT(0);
-static atomic_t global_page_count = ATOMIC_INIT(0);
-static atomic_t global_rtree_node_count = ATOMIC_INIT(0);
-
-#define atomic_inc_and_max(_c) do { \
- atomic_inc(&_c); \
- if ( _atomic_read(_c) > tmem_stats._c##_max ) \
- tmem_stats._c##_max = _atomic_read(_c); \
-} while (0)
-
-#define atomic_dec_and_assert(_c) do { \
- atomic_dec(&_c); \
- ASSERT(_atomic_read(_c) >= 0); \
-} while (0)
+static long global_eph_count; /* Atomicity depends on eph_lists_spinlock. */
/*
@@ -685,7 +691,8 @@ static void pgp_free(struct tmem_page_descriptor *pgp)
}
pgp_free_data(pgp, pool);
atomic_dec_and_assert(global_pgp_count);
- atomic_dec_and_assert(pool->pgp_count);
+ atomic_dec(&pool->pgp_count);
+ ASSERT(_atomic_read(pool->pgp_count) >= 0);
pgp->size = -1;
if ( is_persistent(pool) && pool->client->live_migrating )
{
@@ -2210,11 +2217,11 @@ static int tmemc_list_global(tmem_cli_va_param_t buf, int off, uint32_t len,
"Ec:%ld,Em:%ld,Oc:%d,Om:%d,Nc:%d,Nm:%d,Pc:%d,Pm:%d,"
"Fc:%d,Fm:%d,Sc:%d,Sm:%d,Ep:%lu,Gd:%lu,Zt:%lu,Gz:%lu\n",
global_eph_count, tmem_stats.global_eph_count_max,
- _atomic_read(global_obj_count), tmem_stats.global_obj_count_max,
- _atomic_read(global_rtree_node_count), tmem_stats.global_rtree_node_count_max,
- _atomic_read(global_pgp_count), tmem_stats.global_pgp_count_max,
- _atomic_read(global_page_count), tmem_stats.global_page_count_max,
- _atomic_read(global_pcd_count), tmem_stats.global_pcd_count_max,
+ _atomic_read(tmem_stats.global_obj_count), tmem_stats.global_obj_count_max,
+ _atomic_read(tmem_stats.global_rtree_node_count), tmem_stats.global_rtree_node_count_max,
+ _atomic_read(tmem_stats.global_pgp_count), tmem_stats.global_pgp_count_max,
+ _atomic_read(tmem_stats.global_page_count), tmem_stats.global_page_count_max,
+ _atomic_read(tmem_stats.global_pcd_count), tmem_stats.global_pcd_count_max,
tmem_stats.tot_good_eph_puts,tmem_stats.deduped_puts,tmem_stats.pcd_tot_tze_size,
tmem_stats.pcd_tot_csize);
if ( sum + n >= len )
--
2.5.5
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-06-02 15:04 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-02 15:04 [PATCH v1 for 4.7] Tmem cleanups Konrad Rzeszutek Wilk
2016-06-02 15:04 ` [PATCH v1 1/4] tmem: Move global stats in a tmem_statistics structure Konrad Rzeszutek Wilk
2016-06-02 15:04 ` Konrad Rzeszutek Wilk [this message]
2016-06-02 15:16 ` [PATCH v1 2/4] tmem: Wrap atomic_t in struct tmem_statistics as well Andrew Cooper
2016-06-02 15:26 ` Konrad Rzeszutek Wilk
2016-06-02 15:04 ` [PATCH v1 3/4] tmem: Move global_ individual variables in a global structure Konrad Rzeszutek Wilk
2016-06-02 15:04 ` [PATCH v1 4/4] tmem: Move bulk of tmem control functions in its own file Konrad Rzeszutek Wilk
2016-06-02 15:17 ` [PATCH v1 for 4.7] Tmem cleanups Jan Beulich
2016-06-02 15:27 ` Konrad Rzeszutek Wilk
2016-06-02 15:42 ` Wei Liu
2016-06-02 15:46 ` Konrad Rzeszutek Wilk
2016-06-02 20:09 ` Konrad Rzeszutek Wilk
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=1464879860-25554-3-git-send-email-konrad.wilk@oracle.com \
--to=konrad.wilk@oracle.com \
--cc=andrew.cooper3@citrix.com \
--cc=cardoe@cardoe.com \
--cc=jbeulich@suse.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.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).