xrootd
|
Attaches/creates and detaches/deletes cache-io objects for disk based cache. More...
#include <XrdFileCache.hh>
Classes | |
struct | WriteQ |
Public Member Functions | |
Cache (XrdSysLogger *logger) | |
Constructor. More... | |
virtual XrdOucCacheIO2 * | Attach (XrdOucCacheIO2 *, int Options=0) |
virtual int | isAttached () |
Number of cache-io objects atteched through this cache. More... | |
virtual void | EnvInfo (XrdOucEnv &theEnv) |
virtual int | LocalFilePath (const char *url, char *buff=0, int blen=0, LFP_Reason why=ForAccess) |
virtual int | Prepare (const char *url, int oflags, mode_t mode) |
virtual int | Stat (const char *url, struct stat &sbuff) |
virtual int | Unlink (const char *url) |
bool | Decide (XrdOucCacheIO *) |
Makes decision if the original XrdOucCacheIO should be cached. More... | |
const Configuration & | RefConfiguration () const |
Reference XrdFileCache configuration. More... | |
bool | Config (const char *config_filename, const char *parameters) |
Parse configuration file. More... | |
void | Purge () |
Thread function running disk cache purge periodically. More... | |
int | UnlinkUnlessOpen (const std::string &f_name) |
Remove file from cache unless it is currently open. More... | |
void | AddWriteTask (Block *b, bool from_read) |
Add downloaded block in write queue. More... | |
void | RemoveWriteQEntriesFor (File *f) |
Remove blocks from write queue which belong to given prefetch. This method is used at the time of File destruction. More... | |
void | ProcessWriteTasks () |
Separate task which writes blocks from ram to disk. More... | |
bool | RequestRAMBlock () |
void | RAMBlockReleased () |
void | RegisterPrefetchFile (File *) |
void | DeRegisterPrefetchFile (File *) |
File * | GetNextFileToPrefetch () |
void | Prefetch () |
XrdOss * | GetOss () const |
bool | IsFileActiveOrPurgeProtected (const std::string &) |
File * | GetFile (const std::string &, IO *, long long off=0, long long filesize=0) |
void | ReleaseFile (File *, IO *) |
void | ScheduleFileSync (File *f) |
void | FileSyncDone (File *, bool high_debug) |
XrdSysError * | GetLog () |
XrdSysTrace * | GetTrace () |
void | ExecuteCommandUrl (const std::string &command_url) |
virtual XrdOucCacheIO2 * | Attach (XrdOucCacheIO2 *ioP, int opts=0)=0 |
Obtain a new IO object that fronts existing XrdOucCacheIO. More... | |
virtual XrdOucCacheIO * | Attach (XrdOucCacheIO *ioP, int opts=0) |
Obtain a new IO object that fronts existing XrdOucCacheIO. More... | |
![]() | |
virtual XrdOucCacheIO * | Attach (XrdOucCacheIO *ioP, int opts=0) |
virtual XrdOucCache * | Create (Parms &Params, XrdOucCacheIO::aprParms *aprP=0) |
XrdOucCache2 () | |
virtual | ~XrdOucCache2 () |
virtual XrdOucCacheIO * | Attach (XrdOucCacheIO *ioP, int Options=0)=0 |
![]() | |
virtual int | Rmdir (const char *) |
virtual int | Rename (const char *, const char *) |
virtual int | Truncate (const char *, off_t) |
XrdOucCache () | |
virtual | ~XrdOucCache () |
Static Public Member Functions | |
static Cache & | CreateInstance (XrdSysLogger *logger) |
Singleton creation. More... | |
static Cache & | GetInstance () |
Singleton access. More... | |
static bool | VCheck (XrdVersionInfo &urVersion) |
Version check. More... | |
Private Types | |
typedef std::map< std::string, File * > | ActiveMap_t |
typedef ActiveMap_t::iterator | ActiveMap_i |
typedef std::set< std::string > | FNameSet_t |
typedef std::vector< File * > | PrefetchList |
Private Member Functions | |
bool | ConfigParameters (std::string, XrdOucStream &, TmpConfiguration &tmpc) |
bool | ConfigXeq (char *, XrdOucStream &) |
bool | xdlib (XrdOucStream &) |
bool | xtrace (XrdOucStream &) |
bool | cfg2bytes (const std::string &str, long long &store, long long totalSpace, const char *name) |
int | UnlinkCommon (const std::string &f_name, bool fail_if_open) |
void | inc_ref_cnt (File *, bool lock, bool high_debug) |
void | dec_ref_cnt (File *, bool high_debug) |
void | schedule_file_sync (File *, bool ref_cnt_already_set, bool high_debug) |
Private Attributes | |
XrdSysError | m_log |
XrdFileCache namespace logger. More... | |
XrdSysTrace * | m_trace |
const char * | m_traceID |
XrdOucCacheStats | m_stats |
XrdOss * | m_output_fs |
disk cache file system More... | |
std::vector< XrdFileCache::Decision * > | m_decisionpoints |
decision plugins More... | |
std::map< std::string, long long > | m_filesInQueue |
Configuration | m_configuration |
configurable parameters More... | |
XrdSysCondVar | m_prefetch_condVar |
lock for vector of prefetching files More... | |
bool | m_prefetch_enabled |
set to true when prefetching is enabled More... | |
XrdSysMutex | m_RAMblock_mutex |
lock for allcoation of RAM blocks More... | |
int | m_RAMblocks_used |
bool | m_isClient |
True if running as client. More... | |
WriteQ | m_writeQ |
ActiveMap_t | m_active |
FNameSet_t | m_purge_delay_set |
bool | m_in_purge |
XrdSysCondVar | m_active_cond |
PrefetchList | m_prefetchList |
Static Private Attributes | |
static Cache * | m_factory |
this object More... | |
static XrdScheduler * | schedP |
Additional Inherited Members | |
![]() | |
enum | LFP_Reason { ForAccess =0, ForInfo, ForPath } |
![]() | |
XrdOucCacheStats | Stats |
![]() | |
static const int | optADB = 0x1000 |
static const int | optFIS = 0x0001 |
static const int | optFIU = 0x0002 |
static const int | optRW = 0x0004 |
static const int | optNEW = 0x0014 |
static const int | optWIN = 0x0024 |
static const int | isServer = 0x0010 |
static const int | isStructured = 0x0020 |
static const int | canPreRead = 0x0040 |
static const int | logStats = 0x0080 |
static const int | Serialized = 0x0004 |
static const int | ioMTSafe = 0x0008 |
static const int | Debug = 0x0003 |
Attaches/creates and detaches/deletes cache-io objects for disk based cache.
|
private |
|
private |
|
private |
|
private |
XrdFileCache::Cache::Cache | ( | XrdSysLogger * | logger | ) |
Constructor.
void XrdFileCache::Cache::AddWriteTask | ( | Block * | b, |
bool | from_read | ||
) |
Add downloaded block in write queue.
virtual XrdOucCacheIO2* XrdOucCache2::Attach |
Obtain a new IO object that fronts existing XrdOucCacheIO.
|
inline |
Obtain a new IO object that fronts existing XrdOucCacheIO.
|
virtual |
Implements XrdOucCache2.
|
private |
bool XrdFileCache::Cache::Config | ( | const char * | config_filename, |
const char * | parameters | ||
) |
Parse configuration file.
config_filename | path to configuration file |
parameters | optional parameters to be passed |
|
private |
|
private |
|
static |
Singleton creation.
|
private |
bool XrdFileCache::Cache::Decide | ( | XrdOucCacheIO * | ) |
Makes decision if the original XrdOucCacheIO should be cached.
& | URL of file |
void XrdFileCache::Cache::DeRegisterPrefetchFile | ( | File * | ) |
|
virtual |
Supply environmental information to the cache. This is only called on the server but is optional and might not be called. When it is called, it is gauranteed to occur before any active use of the cache and is essentially serialized (i.e. the main start-up thread is used). The environmental information should only be used to optimize processing. For instance, when cache monitoring is enabled, the variable "pfc.gStream*" is defined and is a pointer to a gStream object that can be used to report statistical information to a monitoring collector.
theEnv | - Reference to environmental information. |
Reimplemented from XrdOucCache2.
void XrdFileCache::Cache::ExecuteCommandUrl | ( | const std::string & | command_url | ) |
void XrdFileCache::Cache::FileSyncDone | ( | File * | , |
bool | high_debug | ||
) |
File* XrdFileCache::Cache::GetFile | ( | const std::string & | , |
IO * | , | ||
long long | off = 0 , |
||
long long | filesize = 0 |
||
) |
|
static |
Singleton access.
|
inline |
References m_log.
File* XrdFileCache::Cache::GetNextFileToPrefetch | ( | ) |
|
inline |
References m_output_fs.
|
inline |
References m_trace.
Referenced by XrdFileCache::IO::GetTrace().
|
private |
|
virtual |
Number of cache-io objects atteched through this cache.
Reimplemented from XrdOucCache.
bool XrdFileCache::Cache::IsFileActiveOrPurgeProtected | ( | const std::string & | ) |
|
virtual |
Reimplemented from XrdOucCache2.
void XrdFileCache::Cache::Prefetch | ( | ) |
|
virtual |
Prepare the cache for a file open request. This method is called prior to actually opening a file. This method is meant to allow defering an open request or implementing the full I/O stack in the cache layer.
url | - Pointer to the url about to be opened. |
oflags | - Standard Unix open flags (see open(2)). |
mode | - Standard mode flags if file is being created. |
Reimplemented from XrdOucCache2.
void XrdFileCache::Cache::ProcessWriteTasks | ( | ) |
Separate task which writes blocks from ram to disk.
void XrdFileCache::Cache::Purge | ( | ) |
Thread function running disk cache purge periodically.
void XrdFileCache::Cache::RAMBlockReleased | ( | ) |
|
inline |
Reference XrdFileCache configuration.
References m_configuration.
void XrdFileCache::Cache::RegisterPrefetchFile | ( | File * | ) |
void XrdFileCache::Cache::RemoveWriteQEntriesFor | ( | File * | f | ) |
Remove blocks from write queue which belong to given prefetch. This method is used at the time of File destruction.
bool XrdFileCache::Cache::RequestRAMBlock | ( | ) |
|
private |
Referenced by ScheduleFileSync().
|
inline |
References schedule_file_sync().
|
virtual |
Perform a stat() operation (defaults to passthrough).
url | pointer to the url whose stat information is wanted. |
sbuff | reference to the stat buffer to be filled in. Only fields st_size, st_blocks, st_mtime (st_atime and st_ctime may be set to st_mtime), st_ino, and st_mode need to be set. All other fields are preset and should not be changed. |
Reimplemented from XrdOucCache2.
|
virtual |
Reimplemented from XrdOucCache.
|
private |
int XrdFileCache::Cache::UnlinkUnlessOpen | ( | const std::string & | f_name | ) |
Remove file from cache unless it is currently open.
|
inlinestatic |
Version check.
|
private |
|
private |
|
private |
|
private |
|
private |
configurable parameters
Referenced by RefConfiguration().
|
private |
decision plugins
|
staticprivate |
this object
|
private |
|
private |
|
private |
True if running as client.
|
private |
XrdFileCache namespace logger.
Referenced by GetLog().
|
private |
lock for vector of prefetching files
|
private |
set to true when prefetching is enabled
|
private |
|
private |
|
private |
lock for allcoation of RAM blocks
|
private |
|
private |
|
private |
Referenced by GetTrace().
|
private |
|
private |
|
staticprivate |