X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_open.c;h=2ef43095d509cac518631a3a31e0f7f796f3d482;hp=b5b3865bfbdf0a298cf3bcc62e49c7ede2e5f5bf;hb=8af8b463237a06b03425ccc4d4d8164ddb44fb68;hpb=e1c12d5c14b4a716ea999204cedb13e98466ff15 diff --git a/src/rrd_open.c b/src/rrd_open.c index b5b3865..2ef4309 100644 --- a/src/rrd_open.c +++ b/src/rrd_open.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.3rc3 Copyright by Tobi Oetiker, 1997-2008 + * RRDtool 1.3rc4 Copyright by Tobi Oetiker, 1997-2008 ***************************************************************************** * rrd_open.c Open an RRD File ***************************************************************************** @@ -226,12 +226,14 @@ rrd_file_t *rrd_open( rrd_set_error("live_head_t malloc"); goto out_close; } -#ifdef HAVE_MMAP - memmove(&rrd->live_head->last_up, data + offset, sizeof(long)); - offset += sizeof(long); -#else - offset += read(rrd_file->fd, &rrd->live_head->last_up, sizeof(long)); -#endif + +#if defined USE_MADVISE + /* the live_head will be needed soonish, so hint accordingly */ + madvise(data + PAGE_START(offset), + sizeof(time_t), MADV_WILLNEED); +#endif + __rrd_read(rrd->legacy_last_up,time_t,1); + rrd->live_head->last_up = *rrd->legacy_last_up; rrd->live_head->last_up_usec = 0; } else { #if defined USE_MADVISE @@ -512,6 +514,7 @@ void rrd_init( rrd->ds_def = NULL; rrd->rra_def = NULL; rrd->live_head = NULL; + rrd->legacy_last_up = NULL; rrd->rra_ptr = NULL; rrd->pdp_prep = NULL; rrd->cdp_prep = NULL; @@ -522,9 +525,12 @@ void rrd_init( /* free RRD header data. */ #ifdef HAVE_MMAP -inline void rrd_free( - rrd_t UNUSED(*rrd)) +void rrd_free( + rrd_t *rrd) { + if (rrd->legacy_last_up){ /* this gets set for version < 3 only */ + free(rrd->live_head); + } } #else void rrd_free(