Yesterday Daniel De Marco wrote: > * Daniel De Marco <d...@bartol.udel.edu> [06/27/2011 23:09]: > > creates it with a header size of 548, that is not divisible by > > sizeof(rrd_value_t)=8. I don't know whether this is normal or not. > > this seems to be normal. However the problem might be in the definition > of rrd_get_header_size in rrd_format.c . To calculate header size the > function includes the sizeof(time_t) that is no longer used in v3. > When rrd_open creates a new file it uses rrd_get_header_size to > determine its size. Then other functions fill it and the 4 extra bytes > remain unused at the end of the file. rrd_resize stumbles on those 4 > extra bytes. On x86_64 the sizeof(time_t) is 8, so the extra space at > the end of the file is a multiple of sizeof(rrd_value_t) and rrd_resize > copies it without complaining. What do you think?
neat ... so I guess the following should fix this problem: Index: rrd_format.c =================================================================== --- rrd_format.c (revision 2188) +++ rrd_format.c (working copy) @@ -125,8 +125,7 @@ return sizeof(stat_head_t) + \ sizeof(ds_def_t) * rrd->stat_head->ds_cnt + \ sizeof(rra_def_t) * rrd->stat_head->rra_cnt + \ - sizeof(time_t) + \ - sizeof(live_head_t) + \ + atoi(rrd->stat_head->version) < 3 ? sizeof(time_t) : sizeof(live_head_t) + \ sizeof(pdp_prep_t) * rrd->stat_head->ds_cnt + \ sizeof(cdp_prep_t) * rrd->stat_head->ds_cnt * rrd->stat_head->rra_cnt + \ sizeof(rra_ptr_t) * rrd->stat_head->rra_cnt; can you try ? cheers tobi > > Daniel. > > -- Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland http://it.oetiker.ch t...@oetiker.ch ++41 62 775 9902 / sb: -9900 _______________________________________________ rrd-users mailing list rrd-users@lists.oetiker.ch https://lists.oetiker.ch/cgi-bin/listinfo/rrd-users