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;
// prevent incremental calculation spikes
rd->counter = 0;
-
- rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
- rrddim_flag_clear(rd, RRDDIM_FLAG_EXPOSED);
+ 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);