rrdset_strncpyz_name(filename, id, FILENAME_MAX);
snprintfz(fullfilename, FILENAME_MAX, "%s/%s.db", st->cache_dir, filename);
- if(st->rrd_memory_mode != RRD_MEMORY_MODE_RAM) {
+ if(st->rrd_memory_mode == RRD_MEMORY_MODE_SAVE || st->rrd_memory_mode == RRD_MEMORY_MODE_MAP) {
rd = (RRDDIM *)mymmap(fullfilename, size, ((st->rrd_memory_mode == RRD_MEMORY_MODE_MAP) ? MAP_SHARED : MAP_PRIVATE), 1);
if(likely(rd)) {
// we have a file mapped for rd
rd->id = NULL;
rd->name = NULL;
rd->cache_filename = NULL;
- rd->flags = 0x00000000;
rd->variables = NULL;
rd->next = NULL;
rd->rrdset = NULL;
if(unlikely(!rd)) {
// if we didn't manage to get a mmap'd dimension, just create one
rd = callocz(1, size);
- rd->rrd_memory_mode = RRD_MEMORY_MODE_RAM;
+ rd->rrd_memory_mode = (st->rrd_memory_mode == RRD_MEMORY_MODE_NONE) ? RRD_MEMORY_MODE_NONE : RRD_MEMORY_MODE_RAM;
}
rd->memsize = size;
rd->update_every = st->update_every;
// prevent incremental calculation spikes
- rd->counter = 0;
-
- rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
- rrddim_flag_clear(rd, RRDDIM_FLAG_EXPOSED);
+ rd->collections_counter = 0;
+ rd->updated = 0;
+ rd->flags = 0x00000000;
rd->calculated_value = 0;
rd->last_calculated_value = 0;
munmap(rd, rd->memsize);
break;
+ case RRD_MEMORY_MODE_NONE:
case RRD_MEMORY_MODE_RAM:
debug(D_RRD_CALLS, "Removing dimension '%s'.", rd->name);
freez((void *)rd->id);
now_realtime_timeval(&rd->last_collected_time);
rd->collected_value = value;
- rrddim_flag_set(rd, RRDDIM_FLAG_UPDATED);
- rd->counter++;
+ rd->updated = 1;
+
+ rd->collections_counter++;
// fprintf(stderr, "%s.%s %llu " COLLECTED_NUMBER_FORMAT " dt %0.6f" " rate " CALCULATED_NUMBER_FORMAT "\n", st->name, rd->name, st->usec_since_last_update, value, (float)((double)st->usec_since_last_update / (double)1000000), (calculated_number)((value - rd->last_collected_value) * (calculated_number)rd->multiplier / (calculated_number)rd->divisor * 1000000.0 / (calculated_number)st->usec_since_last_update));