// SPDX-License-Identifier: GPL-3.0-or-later#define NETDATA_RRD_INTERNALS#include"rrdengine.h"rrdeng_stats_tglobal_io_errors=0;rrdeng_stats_tglobal_fs_errors=0;rrdeng_stats_trrdeng_reserved_file_descriptors=0;rrdeng_stats_tglobal_pg_cache_over_half_dirty_events=0;rrdeng_stats_tglobal_flushing_pressure_page_deletions=0;staticunsignedpages_per_extent=MAX_PAGES_PER_EXTENT;staticvoidsanity_check(void){/* Magic numbers must fit in the super-blocks */BUILD_BUG_ON(strlen(RRDENG_DF_MAGIC)>RRDENG_MAGIC_SZ);BUILD_BUG_ON(strlen(RRDENG_JF_MAGIC)>RRDENG_MAGIC_SZ);/* Version strings must fit in the super-blocks */BUILD_BUG_ON(strlen(RRDENG_DF_VER)>RRDENG_VER_SZ);BUILD_BUG_ON(strlen(RRDENG_JF_VER)>RRDENG_VER_SZ);/* Data file super-block cannot be larger than RRDENG_BLOCK_SIZE */BUILD_BUG_ON(RRDENG_DF_SB_PADDING_SZ<0);BUILD_BUG_ON(sizeof(uuid_t)!=UUID_SZ);/* check UUID size *//* page count must fit in 8 bits */BUILD_BUG_ON(MAX_PAGES_PER_EXTENT>255);/* extent cache count must fit in 32 bits */BUILD_BUG_ON(MAX_CACHED_EXTENTS>32);/* page info scratch space must be able to hold 2 32-bit integers */BUILD_BUG_ON(sizeof(((structrrdeng_page_info*)0)->scratch)<2*sizeof(uint32_t));}/* always inserts into tail */staticinlinevoidxt_cache_replaceQ_insert(structrrdengine_worker_config*wc,structextent_cache_element*xt_cache_elem){structextent_cache*xt_cache=&wc->xt_cache;xt_cache_elem->prev=NULL;xt_cache_elem->next=NULL;if(likely(NULL!=xt_cache->replaceQ_tail)){xt_cache_elem->prev=xt_cache->replaceQ_tail;xt_cache->replaceQ_tail->next=xt_cache_elem;}if(unlikely(NULL==xt_cache->replaceQ_head)){xt_cache->replaceQ_head=xt_cache_elem;