Go to the documentation of this file. 1 #ifndef __XRDFILECACHE_CACHE_HH__
2 #define __XRDFILECACHE_CACHE_HH__
25 #include "XrdVersion.hh"
156 virtual int LocalFilePath(
const char *url,
char *buff=0,
int blen=0,
161 virtual int Prepare(
const char *url,
int oflags, mode_t mode);
164 virtual int Stat(
const char *url,
struct stat &sbuff);
167 virtual int Unlink(
const char *url);
191 bool Config(
const char *config_filename,
const char *parameters);
206 static bool VCheck(XrdVersionInfo &urVersion) {
return true; }
249 File*
GetFile(
const std::string&,
IO*,
long long off = 0,
long long filesize = 0);
268 bool cfg2bytes(
const std::string &str,
long long &store,
long long totalSpace,
const char *name);
270 int UnlinkCommon(
const std::string& f_name,
bool fail_if_open);
File * GetFile(const std::string &, IO *, long long off=0, long long filesize=0)
Definition: XrdOss.hh:173
XrdSysError m_log
XrdFileCache namespace logger.
Definition: XrdFileCache.hh:275
ActiveMap_t m_active
Definition: XrdFileCache.hh:312
virtual int Stat(const char *url, struct stat &sbuff)
Cache(XrdSysLogger *logger)
Constructor.
const char * m_traceID
Definition: XrdFileCache.hh:277
Definition: XrdOucCache.hh:127
Definition: XrdOucCache2.hh:62
void calculate_fractional_usages(long long du, long long fu, double &frac_du, double &frac_fu)
int m_purgeInterval
sleep interval between cache purges
Definition: XrdFileCache.hh:96
Definition: XrdSysPthread.hh:165
void RemoveWriteQEntriesFor(File *f)
Remove blocks from write queue which belong to given prefetch. This method is used at the time of Fil...
XrdOss * m_output_fs
disk cache file system
Definition: XrdFileCache.hh:280
virtual XrdOucCacheIO2 * Attach(XrdOucCacheIO2 *, int Options=0)
virtual int LocalFilePath(const char *url, char *buff=0, int blen=0, LFP_Reason why=ForAccess, bool forall=false)
void RegisterPrefetchFile(File *)
static Cache & CreateInstance(XrdSysLogger *logger)
Singleton creation.
int m_RAMblocks_used
Definition: XrdFileCache.hh:292
Definition: XrdFileCacheFile.hh:59
static bool VCheck(XrdVersionInfo &urVersion)
Version check.
Definition: XrdFileCache.hh:206
XrdSysCondVar m_active_cond
Definition: XrdFileCache.hh:315
std::string m_fileUsageMax
Definition: XrdFileCache.hh:117
XrdSysTrace * m_trace
Definition: XrdFileCache.hh:276
long long m_fileUsageMax
cache purge - files usage maximum
Definition: XrdFileCache.hh:95
ActiveMap_t::iterator ActiveMap_i
Definition: XrdFileCache.hh:309
long long m_diskUsageHWM
cache purge - disk usage high water mark
Definition: XrdFileCache.hh:92
Definition: XrdOucCache2.hh:196
Definition: XrdFileCacheFile.hh:133
XrdSysMutex m_RAMblock_mutex
lock for allcoation of RAM blocks
Definition: XrdFileCache.hh:291
static Cache & GetInstance()
Singleton access.
@ ForAccess
Definition: XrdOucCache2.hh:297
std::string m_diskUsageHWM
Definition: XrdFileCache.hh:114
LFP_Reason
Definition: XrdOucCache2.hh:297
int m_wqueue_threads
number of threads writing blocks to disk
Definition: XrdFileCache.hh:104
bool m_hdfsmode
flag for enabling block-level operation
Definition: XrdFileCache.hh:83
WriteQ()
Definition: XrdFileCache.hh:297
Base cache-io class that implements XrdOucCacheIO abstract methods.
Definition: XrdFileCacheIO.hh:16
std::string m_fileUsageBaseline
Definition: XrdFileCache.hh:115
bool m_prefetch_enabled
set to true when prefetching is enabled
Definition: XrdFileCache.hh:289
Definition: XrdOucStream.hh:45
int m_prefetch_max_blocks
maximum number of blocks to prefetch per file
Definition: XrdFileCache.hh:105
bool xtrace(XrdOucStream &)
int m_purgeColdFilesAge
purge files older than this age
Definition: XrdFileCache.hh:97
void dec_ref_cnt(File *, bool high_debug)
bool cfg2bytes(const std::string &str, long long &store, long long totalSpace, const char *name)
std::set< std::string > FNameSet_t
Definition: XrdFileCache.hh:310
static Cache * m_factory
this object
Definition: XrdFileCache.hh:272
long long m_flushCnt
nuber of unsynced blcoks on disk before flush is called
Definition: XrdFileCache.hh:108
bool ConfigParameters(std::string, XrdOucStream &, TmpConfiguration &tmpc)
Configuration m_configuration
configurable parameters
Definition: XrdFileCache.hh:286
void inc_ref_cnt(File *, bool lock, bool high_debug)
XrdSysCondVar condVar
write list condVar
Definition: XrdFileCache.hh:299
Definition: XrdFileCache.hh:295
std::string m_meta_space
oss space for metadata files (cinfo)
Definition: XrdFileCache.hh:88
XrdOss * GetOss() const
Definition: XrdFileCache.hh:245
int UnlinkUnlessOpen(const std::string &f_name)
Remove file from cache unless it is currently open.
Definition: XrdSysPthread.hh:78
std::map< std::string, File * > ActiveMap_t
Definition: XrdFileCache.hh:308
std::string m_fileUsageNominal
Definition: XrdFileCache.hh:116
bool Decide(XrdOucCacheIO *)
Makes decision if the original XrdOucCacheIO should be cached.
bool are_file_usage_limits_set() const
Definition: XrdFileCache.hh:77
void ProcessWriteTasks()
Separate task which writes blocks from ram to disk.
Definition: XrdFileCache.hh:40
long long m_RamAbsAvailable
available from configuration
Definition: XrdFileCache.hh:101
Definition: XrdOucEnv.hh:41
bool IsFileActiveOrPurgeProtected(const std::string &)
void FileSyncDone(File *, bool high_debug)
XrdSysTrace * GetTrace()
Definition: XrdFileCache.hh:258
const Configuration & RefConfiguration() const
Reference XrdFileCache configuration.
Definition: XrdFileCache.hh:181
FNameSet_t m_purge_delay_set
Definition: XrdFileCache.hh:313
Definition: XrdScheduler.hh:44
std::string m_username
username passed to oss plugin
Definition: XrdFileCache.hh:86
Definition: XrdSysLogger.hh:52
XrdOucCacheStats m_stats
Definition: XrdFileCache.hh:279
void ScheduleFileSync(File *f)
Definition: XrdFileCache.hh:253
virtual int Unlink(const char *url)
bool xdlib(XrdOucStream &)
Configuration()
Definition: XrdFileCache.hh:53
WriteQ m_writeQ
Definition: XrdFileCache.hh:305
void schedule_file_sync(File *, bool ref_cnt_already_set, bool high_debug)
Definition: XrdOucCacheStats.hh:40
bool m_allow_xrdpfc_command
flag for enabling access to /xrdpfc-command/ functionality.
Definition: XrdFileCache.hh:84
Contains parameters configurable from the xrootd config file.
Definition: XrdFileCache.hh:51
void AddWriteTask(Block *b, bool from_read)
Add downloaded block in write queue.
Definition: XrdClAnyObject.hh:25
std::list< Block * > queue
container
Definition: XrdFileCache.hh:300
std::string m_data_space
oss space for data files
Definition: XrdFileCache.hh:87
long long writes_between_purges
upper bound on amount of bytes written between two purge passes
Definition: XrdFileCache.hh:301
int m_purgeColdFilesPeriod
peform cold file purge every this many purge cycles
Definition: XrdFileCache.hh:98
bool is_purge_plugin_set_up() const
Definition: XrdFileCache.hh:79
bool is_age_based_purge_in_effect() const
Definition: XrdFileCache.hh:78
int size
current size of write queue
Definition: XrdFileCache.hh:302
std::map< std::string, long long > m_filesInQueue
Definition: XrdFileCache.hh:284
virtual int isAttached()
Number of cache-io objects atteched through this cache.
void Purge()
Thread function running disk cache purge periodically.
bool m_isClient
True if running as client.
Definition: XrdFileCache.hh:293
XrdSysCondVar m_prefetch_condVar
lock for vector of prefetching files
Definition: XrdFileCache.hh:288
virtual int Prepare(const char *url, int oflags, mode_t mode)
virtual void EnvInfo(XrdOucEnv &theEnv)
XrdSysError * GetLog()
Definition: XrdFileCache.hh:257
static XrdScheduler * schedP
Definition: XrdFileCache.hh:273
std::vector< File * > PrefetchList
Definition: XrdFileCache.hh:323
long long m_fileUsageBaseline
cache purge - files usage baseline
Definition: XrdFileCache.hh:93
PrefetchList m_prefetchList
Definition: XrdFileCache.hh:324
void ReleaseFile(File *, IO *)
long long m_bufferSize
prefetch buffer size, default 1MB
Definition: XrdFileCache.hh:100
long long m_diskTotalSpace
total disk space on configured partition or oss space
Definition: XrdFileCache.hh:90
#define stat(a, b)
Definition: XrdPosix.hh:96
Definition: XrdFileCache.hh:111
virtual XrdOucCacheIO2 * Attach(XrdOucCacheIO2 *ioP, int opts=0)=0
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
Definition: XrdFileCache.hh:129
Definition: XrdSysError.hh:89
Definition: XrdSysTrace.hh:48
bool ConfigXeq(char *, XrdOucStream &)
int m_NRamBuffers
number of total in-memory cache blocks, cached
Definition: XrdFileCache.hh:102
bool m_in_purge
Definition: XrdFileCache.hh:314
int m_wqueue_blocks
maximum number of blocks written per write-queue loop
Definition: XrdFileCache.hh:103
std::string m_diskUsageLWM
Definition: XrdFileCache.hh:113
long long m_diskUsageLWM
cache purge - disk usage low water mark
Definition: XrdFileCache.hh:91
std::string m_flushRaw
Definition: XrdFileCache.hh:118
void DeRegisterPrefetchFile(File *)
TmpConfiguration()
Definition: XrdFileCache.hh:120
bool Config(const char *config_filename, const char *parameters)
Parse configuration file.
long long m_hdfsbsize
used with m_hdfsmode, default 128MB
Definition: XrdFileCache.hh:107
void ExecuteCommandUrl(const std::string &command_url)
File * GetNextFileToPrefetch()
long long m_fileUsageNominal
cache purge - files usage nominal
Definition: XrdFileCache.hh:94
std::vector< XrdFileCache::Decision * > m_decisionpoints
decision plugins
Definition: XrdFileCache.hh:282
int UnlinkCommon(const std::string &f_name, bool fail_if_open)