projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
prepare for the release of rrdtool-1.3rc9
[rrdtool.git]
/
src
/
rrd_update.c
diff --git
a/src/rrd_update.c
b/src/rrd_update.c
index
c5bd1bf
..
594dfd9
100644
(file)
--- a/
src/rrd_update.c
+++ b/
src/rrd_update.c
@@
-1,5
+1,6
@@
+
/*****************************************************************************
/*****************************************************************************
- * RRDtool 1.
2.99907080300 Copyright by Tobi Oetiker, 1997-2007
+ * RRDtool 1.
3rc9 Copyright by Tobi Oetiker, 1997-2008
*****************************************************************************
* rrd_update.c RRD Update Function
*****************************************************************************
*****************************************************************************
* rrd_update.c RRD Update Function
*****************************************************************************
@@
-70,7
+71,7
@@
int _rrd_update(
const char *tmplt,
int argc,
const char **argv,
const char *tmplt,
int argc,
const char **argv,
- info_t *);
+
rrd_
info_t *);
static int allocate_data_structures(
rrd_t *rrd,
static int allocate_data_structures(
rrd_t *rrd,
@@
-103,7
+104,7
@@
static int process_arg(
char **updvals,
long *tmpl_idx,
unsigned long tmpl_cnt,
char **updvals,
long *tmpl_idx,
unsigned long tmpl_cnt,
- info_t **pcdp_summary,
+
rrd_
info_t **pcdp_summary,
int version,
unsigned long *skip_update,
int *schedule_smooth);
int version,
unsigned long *skip_update,
int *schedule_smooth);
@@
-257,7
+258,7
@@
static int write_to_rras(
unsigned long *rra_current,
time_t current_time,
unsigned long *skip_update,
unsigned long *rra_current,
time_t current_time,
unsigned long *skip_update,
- info_t **pcdp_summary);
+
rrd_
info_t **pcdp_summary);
static int write_RRA_row(
rrd_file_t *rrd_file,
static int write_RRA_row(
rrd_file_t *rrd_file,
@@
-265,7
+266,7
@@
static int write_RRA_row(
unsigned long rra_idx,
unsigned long *rra_current,
unsigned short CDP_scratch_idx,
unsigned long rra_idx,
unsigned long *rra_current,
unsigned short CDP_scratch_idx,
- info_t **pcdp_summary,
+
rrd_
info_t **pcdp_summary,
time_t rra_time);
static int smooth_all_rras(
time_t rra_time);
static int smooth_all_rras(
@@
-316,13
+317,13
@@
static inline void initialize_time(
#define IFDNAN(X,Y) (isnan(X) ? (Y) : (X));
#define IFDNAN(X,Y) (isnan(X) ? (Y) : (X));
-
info_t
*rrd_update_v(
+
rrd_info_t
*rrd_update_v(
int argc,
char **argv)
{
char *tmplt = NULL;
int argc,
char **argv)
{
char *tmplt = NULL;
- info_t *result = NULL;
-
infoval
rc;
+
rrd_
info_t *result = NULL;
+
rrd_infoval_t
rc;
struct option long_options[] = {
{"template", required_argument, 0, 't'},
{0, 0, 0, 0}
struct option long_options[] = {
{"template", required_argument, 0, 't'},
{0, 0, 0, 0}
@@
-358,7
+359,7
@@
info_t *rrd_update_v(
goto end_tag;
}
rc.u_int = 0;
goto end_tag;
}
rc.u_int = 0;
- result = info_push(NULL, sprintf_alloc("return_value"), RD_I_INT, rc);
+ result =
rrd_
info_push(NULL, sprintf_alloc("return_value"), RD_I_INT, rc);
rc.u_int = _rrd_update(argv[optind], tmplt,
argc - optind - 1,
(const char **) (argv + optind + 1), result);
rc.u_int = _rrd_update(argv[optind], tmplt,
argc - optind - 1,
(const char **) (argv + optind + 1), result);
@@
-427,7
+428,7
@@
int _rrd_update(
const char *tmplt,
int argc,
const char **argv,
const char *tmplt,
int argc,
const char **argv,
- info_t *pcdp_summary)
+
rrd_
info_t *pcdp_summary)
{
int arg_i = 2;
{
int arg_i = 2;
@@
-478,7
+479,7
@@
int _rrd_update(
/* get exclusive lock to whole file.
* lock gets removed when we close the file.
*/
/* get exclusive lock to whole file.
* lock gets removed when we close the file.
*/
- if (
LockRRD(rrd_file->fd
) != 0) {
+ if (
rrd_lock(rrd_file
) != 0) {
rrd_set_error("could not lock RRD");
goto err_close;
}
rrd_set_error("could not lock RRD");
goto err_close;
}
@@
-559,8
+560,8
@@
int _rrd_update(
*
* returns 0 on success
*/
*
* returns 0 on success
*/
-int
LockRRD
(
-
int in_
file)
+int
rrd_lock
(
+
rrd_file_t *
file)
{
int rcstat;
{
int rcstat;
@@
-568,8
+569,8
@@
int LockRRD(
#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
struct _stat st;
#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
struct _stat st;
- if (_fstat(
in_file
, &st) == 0) {
- rcstat = _locking(
in_file
, _LK_NBLCK, st.st_size);
+ if (_fstat(
file->fd
, &st) == 0) {
+ rcstat = _locking(
file->fd
, _LK_NBLCK, st.st_size);
} else {
rcstat = -1;
}
} else {
rcstat = -1;
}
@@
-581,7
+582,7
@@
int LockRRD(
lock.l_start = 0; /* start of file */
lock.l_whence = SEEK_SET; /* end of file */
lock.l_start = 0; /* start of file */
lock.l_whence = SEEK_SET; /* end of file */
- rcstat = fcntl(
in_file
, F_SETLK, &lock);
+ rcstat = fcntl(
file->fd
, F_SETLK, &lock);
#endif
}
#endif
}
@@
-749,7
+750,7
@@
static int process_arg(
char **updvals,
long *tmpl_idx,
unsigned long tmpl_cnt,
char **updvals,
long *tmpl_idx,
unsigned long tmpl_cnt,
- info_t **pcdp_summary,
+
rrd_
info_t **pcdp_summary,
int version,
unsigned long *skip_update,
int *schedule_smooth)
int version,
unsigned long *skip_update,
int *schedule_smooth)
@@
-831,6
+832,9
@@
static int process_arg(
rrd->live_head->last_up = *current_time;
rrd->live_head->last_up_usec = *current_time_usec;
rrd->live_head->last_up = *current_time;
rrd->live_head->last_up_usec = *current_time_usec;
+ if (version < 3) {
+ *rrd->legacy_last_up = rrd->live_head->last_up;
+ }
free(seasonal_coef);
free(last_seasonal_coef);
return 0;
free(seasonal_coef);
free(last_seasonal_coef);
return 0;
@@
-922,12
+926,12
@@
static int get_time_from_reading(
double tmp;
char *parsetime_error = NULL;
char *old_locale;
double tmp;
char *parsetime_error = NULL;
char *old_locale;
-
struct rrd_time_value
ds_tv;
+
rrd_time_value_t
ds_tv;
struct timeval tmp_time; /* used for time conversion */
/* get the time from the reading ... handle N */
if (timesyntax == '@') { /* at-style */
struct timeval tmp_time; /* used for time conversion */
/* get the time from the reading ... handle N */
if (timesyntax == '@') { /* at-style */
- if ((parsetime_error = parsetime(updvals[0], &ds_tv))) {
+ if ((parsetime_error =
rrd_
parsetime(updvals[0], &ds_tv))) {
rrd_set_error("ds time: %s: %s", updvals[0], parsetime_error);
return -1;
}
rrd_set_error("ds time: %s: %s", updvals[0], parsetime_error);
return -1;
}
@@
-1240,10
+1244,13
@@
static int process_all_pdp_st(
}
#ifdef DEBUG
fprintf(stderr, "PDP UPD ds[%lu]\t"
}
#ifdef DEBUG
fprintf(stderr, "PDP UPD ds[%lu]\t"
+ "elapsed_pdp_st %lu\t"
"pdp_temp %10.2f\t"
"new_prep %10.2f\t"
"new_unkn_sec %5lu\n",
"pdp_temp %10.2f\t"
"new_prep %10.2f\t"
"new_unkn_sec %5lu\n",
- ds_idx, pdp_temp[ds_idx],
+ ds_idx,
+ elapsed_pdp_st,
+ pdp_temp[ds_idx],
rrd->pdp_prep[ds_idx].scratch[PDP_val].u_val,
rrd->pdp_prep[ds_idx].scratch[PDP_unkn_sec_cnt].u_cnt);
#endif
rrd->pdp_prep[ds_idx].scratch[PDP_val].u_val,
rrd->pdp_prep[ds_idx].scratch[PDP_unkn_sec_cnt].u_cnt);
#endif
@@
-1264,7
+1271,7
@@
static int process_pdp_st(
double interval,
double pre_int,
double post_int,
double interval,
double pre_int,
double post_int,
- long diff_pdp_st,
+ long diff_pdp_st,
/* number of seconds in full steps passed since last update */
rrd_value_t *pdp_new,
rrd_value_t *pdp_temp)
{
rrd_value_t *pdp_new,
rrd_value_t *pdp_temp)
{
@@
-1281,7
+1288,7
@@
static int process_pdp_st(
if (isnan(pdp_new[ds_idx])) {
if (isnan(pdp_new[ds_idx])) {
- /* a final bit of unknown to be added be
v
ore calculation
+ /* a final bit of unknown to be added be
f
ore calculation
we use a temporary variable for this so that we
don't have to turn integer lines before using the value */
pre_unknown = pre_int;
we use a temporary variable for this so that we
don't have to turn integer lines before using the value */
pre_unknown = pre_int;
@@
-1295,7
+1302,8
@@
static int process_pdp_st(
/* if too much of the pdp_prep is unknown we dump it */
/* if the interval is larger thatn mrhb we get NAN */
if ((interval > mrhb) ||
/* if too much of the pdp_prep is unknown we dump it */
/* if the interval is larger thatn mrhb we get NAN */
if ((interval > mrhb) ||
- (diff_pdp_st <= (signed) scratch[PDP_unkn_sec_cnt].u_cnt)) {
+ (rrd->stat_head->pdp_step / 2.0 <
+ (signed) scratch[PDP_unkn_sec_cnt].u_cnt)) {
pdp_temp[ds_idx] = DNAN;
} else {
pdp_temp[ds_idx] = scratch[PDP_val].u_val /
pdp_temp[ds_idx] = DNAN;
} else {
pdp_temp[ds_idx] = scratch[PDP_val].u_val /
@@
-1752,7
+1760,7
@@
static rrd_value_t calculate_cdp_val(
int UNUSED(i),
int UNUSED(ii)
#endif
int UNUSED(i),
int UNUSED(ii)
#endif
-)
+
)
{
if (isnan(cdp_val)) {
if (current_cf == CF_AVERAGE) {
{
if (isnan(cdp_val)) {
if (current_cf == CF_AVERAGE) {
@@
-1847,7
+1855,7
@@
static int write_to_rras(
unsigned long *rra_current,
time_t current_time,
unsigned long *skip_update,
unsigned long *rra_current,
time_t current_time,
unsigned long *skip_update,
- info_t **pcdp_summary)
+
rrd_
info_t **pcdp_summary)
{
unsigned long rra_idx;
unsigned long rra_start;
{
unsigned long rra_idx;
unsigned long rra_start;
@@
-1955,11
+1963,11
@@
static int write_RRA_row(
unsigned long rra_idx,
unsigned long *rra_current,
unsigned short CDP_scratch_idx,
unsigned long rra_idx,
unsigned long *rra_current,
unsigned short CDP_scratch_idx,
- info_t **pcdp_summary,
+
rrd_
info_t **pcdp_summary,
time_t rra_time)
{
unsigned long ds_idx, cdp_idx;
time_t rra_time)
{
unsigned long ds_idx, cdp_idx;
-
infoval
iv;
+
rrd_infoval_t
iv;
for (ds_idx = 0; ds_idx < rrd->stat_head->ds_cnt; ds_idx++) {
/* compute the cdp index */
for (ds_idx = 0; ds_idx < rrd->stat_head->ds_cnt; ds_idx++) {
/* compute the cdp index */
@@
-1972,7
+1980,7
@@
static int write_RRA_row(
if (*pcdp_summary != NULL) {
iv.u_val = rrd->cdp_prep[cdp_idx].scratch[CDP_scratch_idx].u_val;
/* append info to the return hash */
if (*pcdp_summary != NULL) {
iv.u_val = rrd->cdp_prep[cdp_idx].scratch[CDP_scratch_idx].u_val;
/* append info to the return hash */
- *pcdp_summary = info_push(*pcdp_summary,
+ *pcdp_summary =
rrd_
info_push(*pcdp_summary,
sprintf_alloc("[%d]RRA[%s][%lu]DS[%s]",
rra_time,
rrd->rra_def[rra_idx].
sprintf_alloc("[%d]RRA[%s][%lu]DS[%s]",
rra_time,
rrd->rra_def[rra_idx].
@@
-2048,7
+2056,7
@@
static int write_changes_to_disk(
return -1;
}
} else {
return -1;
}
} else {
- if (rrd_write(rrd_file,
&rrd->live_head->
last_up,
+ if (rrd_write(rrd_file,
rrd->legacy_
last_up,
sizeof(time_t) * 1) != sizeof(time_t) * 1) {
rrd_set_error("rrd_write live_head to rrd");
return -1;
sizeof(time_t) * 1) != sizeof(time_t) * 1) {
rrd_set_error("rrd_write live_head to rrd");
return -1;