summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Kozina <okozina@redhat.com>2015-04-21 15:29:50 +0200
committerOndrej Kozina <okozina@redhat.com>2015-05-07 15:50:29 +0200
commit2312bac7fd28412b299449a53bb05b2ca142e6e7 (patch)
treef342b07f218d56f474d5a72b02509246714b551e
parent416e712023cd4a783c42abb95ebd24f8cad20cc6 (diff)
downloadlvm2-2312bac7fd28412b299449a53bb05b2ca142e6e7.tar.gz
lvmpolld: track poll/abort init requests count per LV
-rw-r--r--daemons/lvmpolld/lvmpolld-core.c1
-rw-r--r--daemons/lvmpolld/lvmpolld-data-utils.c5
-rw-r--r--daemons/lvmpolld/lvmpolld-data-utils.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/daemons/lvmpolld/lvmpolld-core.c b/daemons/lvmpolld/lvmpolld-core.c
index df0888ac0..693d80667 100644
--- a/daemons/lvmpolld/lvmpolld-core.c
+++ b/daemons/lvmpolld/lvmpolld-core.c
@@ -665,6 +665,7 @@ static response poll_init(client_handle h, lvmpolld_state_t *ls, request req, en
return reply(LVMPD_RESP_EINVAL,
REASON_DIFFERENT_OPERATION_IN_PROGRESS);
}
+ pdlv->init_rq_count++; /* safe. protected by store lock */
} else {
pdlv = construct_pdlv(req, ls, pdst, interval, id, vgname,
lvname, sysdir, type, abort, uinterval);
diff --git a/daemons/lvmpolld/lvmpolld-data-utils.c b/daemons/lvmpolld/lvmpolld-data-utils.c
index 111946029..a5385d137 100644
--- a/daemons/lvmpolld/lvmpolld-data-utils.c
+++ b/daemons/lvmpolld/lvmpolld-data-utils.c
@@ -111,7 +111,8 @@ lvmpolld_lv_t *pdlv_create(lvmpolld_state_t *ls, const char *id,
.sinterval = dm_strdup(sinterval), /* copy */
.pdtimeout = pdtimeout ?: PDTIMEOUT_DEF,
.cmd_state = { .retcode = -1, .signal = 0 },
- .pdst = pdst
+ .pdst = pdst,
+ .init_rq_count = 1
}, *pdlv = (lvmpolld_lv_t *) dm_malloc(sizeof(lvmpolld_lv_t));
if (!pdlv || !tmp.lvid || !tmp.lvname || !tmp.lvm_system_dir_env || !tmp.sinterval)
@@ -270,6 +271,8 @@ static void _pdlv_locked_dump(struct buffer *buff, const lvmpolld_lv_t *pdlv)
buffer_append(buff, tmp);
if (dm_snprintf(tmp, sizeof(tmp), "\t\terror_occured=%d\n", pdlv->error) > 0)
buffer_append(buff, tmp);
+ if (dm_snprintf(tmp, sizeof(tmp), "\t\tinit_requests_count=%d\n", pdlv->init_rq_count) > 0)
+ buffer_append(buff, tmp);
/* lvm_commmand-section { */
buffer_append(buff, "\t\tlvm_command {\n");
diff --git a/daemons/lvmpolld/lvmpolld-data-utils.h b/daemons/lvmpolld/lvmpolld-data-utils.h
index b99f1b3f9..d8a9ae4e3 100644
--- a/daemons/lvmpolld/lvmpolld-data-utils.h
+++ b/daemons/lvmpolld/lvmpolld-data-utils.h
@@ -78,6 +78,7 @@ typedef struct lvmpolld_lv {
/* block of shared variables protected by lock */
lvmpolld_cmd_stat_t cmd_state;
+ unsigned init_rq_count; /* for debuging purposes only */
unsigned polling_finished:1; /* no more updates */
unsigned error:1; /* unrecoverable error occured in lvmpolld */
} lvmpolld_lv_t;