1 #ifndef __XRDFILECACHE_PREFETCH_HH__
2 #define __XRDFILECACHE_PREFETCH_HH__
52 long long offset,
long long fileSize);
87 ssize_t
Read(
char * buff, off_t offset,
size_t size);
104 Task(): ramBlockIdx(-1), condVar(0) {}
106 ramBlockIdx(r), condVar(cv) {}
147 ssize_t
ReadInBlocks(
char* buff, off_t offset,
size_t size);
153 bool ReadFromTask(
int bIdx,
char* buff,
long long off,
size_t size);
159 const char*
lPath()
const;
int ReadV(const XrdOucIOVec *readV, int n)
Vector read from disk if block is already downloaded, else ReadV from client.
bool m_started
state of run thread
Definition: XrdFileCachePrefetch.hh:173
std::deque< Task * > m_tasks_queue
download queue
Definition: XrdFileCachePrefetch.hh:181
int m_numBlocks
number of in memory blocks
Definition: XrdFileCachePrefetch.hh:122
Downloads original file into multiple files, chunked into blocks. Only blocks that are asked for are ...
Definition: XrdFileCacheIOFileBlock.hh:39
Task * CreateTaskForFirstUndownloadedBlock()
Prefetch block.
Statistics of disk cache utilisation.
Definition: XrdFileCacheStats.hh:30
char * m_buffer
buffer m_numBlocks x size_of_block
Definition: XrdFileCachePrefetch.hh:123
XrdSysCondVar m_writeMutex
write mutex
Definition: XrdFileCachePrefetch.hh:125
Definition: XrdFileCachePrefetch.hh:120
long long m_fileSize
size of disk file for block-based operation
Definition: XrdFileCachePrefetch.hh:171
RAMBlock()
Definition: XrdFileCachePrefetch.hh:117
Definition: XrdFileCache.hh:30
void DoTask(Task *task)
Read from client into in memory cache, queue ram buffer for disk write.
bool InitiateClose()
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close()
Stats & GetStats()
Reference to prefetch statistics.
Definition: XrdFileCachePrefetch.hh:67
Definition: XrdOucCache.hh:158
A prefetching task – a file region that requires preferential treatment.
Definition: XrdFileCachePrefetch.hh:99
Task(int r, XrdSysCondVar *cv)
Definition: XrdFileCachePrefetch.hh:105
Definition: XrdFileCachePrefetch.hh:110
void AppendIOStatToFileInfo()
Write cache statistics in *cinfo file.
Definition: XrdFileCachePrefetch.hh:44
Definition: XrdFileCachePrefetch.hh:44
Status of cached file. Can be read from and written into a binary file.
Definition: XrdFileCacheInfo.hh:44
bool Open()
Open file handle for data file and info file on local disk.
XrdSysCondVar * condVar
signal when complete
Definition: XrdFileCachePrefetch.hh:102
void WriteBlockToDisk(int ramIdx, size_t size)
Write block to file on disk. Called from Cache.
const char * lPath() const
Log path.
XrdSysCondVar m_stateCond
state condition variable
Definition: XrdFileCachePrefetch.hh:177
void Run()
Thread function for file prefetching.
Task * GetNextTask()
Get blocks to prefetch.
Downloads data into a file on local disk and handles IO read requests.
Definition: XrdFileCachePrefetch.hh:40
~Task()
Definition: XrdFileCachePrefetch.hh:107
Definition: XrdFileCachePrefetch.hh:44
static Log * GetLog()
Get default log.
Definition: XrdSysPthread.hh:140
void RecordDownloadInfo()
Write download state into cinfo file.
Definition: XrdSysPthread.hh:53
bool m_stopping
run thread should be stopped
Definition: XrdFileCachePrefetch.hh:175
Definition: XrdOucIOVec.hh:40
Definition: XrdClEnv.hh:28
XrdOucCacheIO & m_input
original data source
Definition: XrdFileCachePrefetch.hh:166
Downloads original file into a single file on local disk. Handles read requests as they come along...
Definition: XrdFileCacheIOEntireFile.hh:39
Task()
Definition: XrdFileCachePrefetch.hh:104
int refCount
read and write reference count
Definition: XrdFileCachePrefetch.hh:112
XrdSysMutex m_downloadStatusMutex
mutex locking access to m_cfi object
Definition: XrdFileCachePrefetch.hh:179
ssize_t ReadInBlocks(char *buff, off_t offset, size_t size)
Split read in blocks.
int ramBlockIdx
idx in the in-memory buffer
Definition: XrdFileCachePrefetch.hh:101
bool m_failed
reading from original source or writing to disk has failed
Definition: XrdFileCachePrefetch.hh:174
void DecRamBlockRefCount(int ramIdx)
Decrease block reference count.
XrdSysCondVar m_queueCond
m_tasks_queue condition variable
Definition: XrdFileCachePrefetch.hh:182
std::string m_temp_filename
filename of data file on disk
Definition: XrdFileCachePrefetch.hh:168
long long m_offset
offset of disk file for block-based operation
Definition: XrdFileCachePrefetch.hh:170
ReadRamState_t
Definition: XrdFileCachePrefetch.hh:44
int readErrno
posix error on read fail
Definition: XrdFileCachePrefetch.hh:115
ssize_t Read(char *buff, off_t offset, size_t size)
Read from disk, RAM, task, or client.
bool m_stopped
prefetch is stopped
Definition: XrdFileCachePrefetch.hh:176
int fileBlockIdx
offset in output file
Definition: XrdFileCachePrefetch.hh:111
Stats m_stats
cache statistics, used in IO detach
Definition: XrdFileCachePrefetch.hh:184
bool ReadFromTask(int bIdx, char *buff, long long off, size_t size)
Create task from read request and wait its completed.
XrdOssDF * m_infoFile
file handle for data-info file on disk
Definition: XrdFileCachePrefetch.hh:164
RAM m_ram
in memory cache
Definition: XrdFileCachePrefetch.hh:161
bool fromRead
is ram requested from prefetch or read
Definition: XrdFileCachePrefetch.hh:113
XrdOssDF * m_output
file handle for data file on disk
Definition: XrdFileCachePrefetch.hh:163
void CloseCleanly()
Stop Run thread.
ReadRamState_t status
read from client status
Definition: XrdFileCachePrefetch.hh:114
XrdCl::Log * clLog() const
Short log alias.
Definition: XrdFileCachePrefetch.hh:144
Info m_cfi
download status of file blocks and access statistics
Definition: XrdFileCachePrefetch.hh:165
Prefetch(XrdOucCacheIO &inputFile, std::string &path, long long offset, long long fileSize)
Constructor.
RAMBlock * m_blockStates
referenced structure
Definition: XrdFileCachePrefetch.hh:124