Go to the documentation of this file. 1 #ifndef __XRDPFC_FILE_HH__
2 #define __XRDPFC_FILE_HH__
44 class BlockResponseHandler;
45 class DirectResponseHandler;
48 struct ReadVBlockListRAM;
49 struct ReadVChunkListRAM;
50 struct ReadVBlockListDisk;
51 struct ReadVChunkListDisk;
144 File(
const std::string &path,
long long offset,
long long fileSize);
149 static File*
FileOpen(
const std::string &path,
long long offset,
long long fileSize);
169 int Read (
IO *io,
char* buff,
long long offset,
int size);
338 char* buff,
long long req_off,
long long req_size);
341 char* req_buf,
long long req_off,
long long req_size);
347 ReadVBlockListRAM& blks_to_process,
348 ReadVBlockListDisk& blks_on_disk,
349 std::vector<XrdOucIOVec>& chunkVec);
351 ReadVBlockListDisk& blks_on_disk);
353 std::vector<ReadVChunkListRAM>& blks_to_process,
354 std::vector<ReadVChunkListRAM>& blks_processed,
355 long long& bytes_hit,
356 long long& bytes_missed);
Stats DeltaStatsFromLastCall()
Definition: XrdPfcFile.hh:61
int Read(IO *io, char *buff, long long offset, int size)
Normal read.
void inc_ref_count(Block *)
int dec_ref_cnt()
Definition: XrdPfcFile.hh:239
float GetPrefetchScore() const
void initiate_emergency_shutdown()
int m_errno
Definition: XrdPfcFile.hh:70
bool is_in_emergency_shutdown()
Definition: XrdPfcFile.hh:242
std::vector< uint32_t > vCkSum_t
Definition: XrdPfcTypes.hh:27
vCkSum_t & ref_cksum_vec()
Definition: XrdPfcFile.hh:103
void insert_remote_location(const std::string &loc)
bool m_allow_prefetching
Definition: XrdPfcFile.hh:266
bool is_ok()
Definition: XrdPfcFile.hh:130
const char * lPath() const
Log path.
const AStat * GetLastAccessStats() const
Get latest access stats.
IoMap_t::iterator IoMap_i
Definition: XrdPfcFile.hh:278
Definition: XrdSysPthread.hh:130
void set_error(int err)
Definition: XrdPfcFile.hh:93
bool m_detach_time_logged
Definition: XrdPfcFile.hh:318
bool m_downloaded
Definition: XrdPfcFile.hh:71
void ProcessBlockResponse(BlockResponseHandler *brh, int res)
char * m_buff
Definition: XrdPfcFile.hh:66
long long get_offset()
Definition: XrdPfcFile.hh:84
int VReadProcessBlocks(IO *io, const XrdOucIOVec *readV, int n, std::vector< ReadVChunkListRAM > &blks_to_process, std::vector< ReadVChunkListRAM > &blks_processed, long long &bytes_hit, long long &bytes_missed)
int get_size()
Definition: XrdPfcFile.hh:83
int m_errno
Definition: XrdPfcFile.hh:125
int m_prefetch_read_cnt
Definition: XrdPfcFile.hh:314
void RequestSyncOfDetachStats()
Flags that detach stats should be written out in final sync. Called from CacheIO upon Detach.
Base cache-io class that implements XrdOucCacheIO abstract methods.
Definition: XrdPfcIO.hh:17
std::set< std::string > m_remote_locations
Gathered in AddIO / ioUpdate / ioActive.
Definition: XrdPfcFile.hh:309
BlockMap_t::iterator BlockMap_i
Definition: XrdPfcFile.hh:296
bool m_is_open
open state (presumably not needed anymore)
Definition: XrdPfcFile.hh:249
std::list< int > IntList_t
Definition: XrdPfcFile.hh:289
void Sync()
Sync file cache inf o and output data with disk.
long long GetFileSize()
Definition: XrdPfcFile.hh:220
Definition: XrdPfcFile.hh:139
int ReadBlocksFromDisk(IntList_t &blocks, char *req_buf, long long req_off, long long req_size)
float m_prefetch_score
Definition: XrdPfcFile.hh:316
int m_to_wait
Definition: XrdPfcFile.hh:124
int m_prefetch_hit_cnt
Definition: XrdPfcFile.hh:315
Definition: XrdPfcFile.hh:109
void VReadPreProcess(IO *io, const XrdOucIOVec *readV, int n, BlockList_t &blks_to_request, ReadVBlockListRAM &blks_to_process, ReadVBlockListDisk &blks_on_disk, std::vector< XrdOucIOVec > &chunkVec)
int GetBlockSize() const
Definition: XrdPfcFile.hh:232
PrefetchState_e
Definition: XrdPfcFile.hh:245
int m_active_prefetches
Definition: XrdPfcFile.hh:265
Info m_cfi
download status of file blocks and access statistics
Definition: XrdPfcFile.hh:254
char * get_buff()
Definition: XrdPfcFile.hh:82
bool isOpen() const
Data and cinfo files are open.
Definition: XrdPfcFile.hh:174
bool m_req_cksum_net
Definition: XrdPfcFile.hh:73
int inc_ref_cnt()
Definition: XrdPfcFile.hh:238
int m_ios_in_detach
Number of IO objects to which we replied false to ioActive() and will be removed soon.
Definition: XrdPfcFile.hh:282
Stats m_stats
cache statistics for this instance
Definition: XrdPfcFile.hh:306
int GetPrefetchCountOnIO(IO *io)
Definition: XrdOucIOVec.hh:41
XrdSysCondVar m_cond
Definition: XrdPfcFile.hh:123
bool is_ok()
Definition: XrdPfcFile.hh:89
int GetNBlocks() const
Definition: XrdPfcFile.hh:233
const Info::AStat * GetLastAccessStats() const
Definition: XrdPfcFile.hh:230
time_t m_attach_time
Definition: XrdPfcFile.hh:264
void BlocksRemovedFromWriteQ(std::list< Block * > &)
Handle removal of a set of blocks from Cache's write queue.
long long m_offset
Definition: XrdPfcFile.hh:67
static const char * m_traceID
Definition: XrdPfcFile.hh:320
@ kHold
Definition: XrdPfcFile.hh:245
int ReadV(IO *io, const XrdOucIOVec *readV, int n)
Vector read from disk if block is already downloaded, else ReadV from client.
void set_downloaded()
Definition: XrdPfcFile.hh:92
XrdOssDF * m_info_file
file handle for data-info file on disk
Definition: XrdPfcFile.hh:253
Definition: XrdSysPthread.hh:79
void ioUpdated(IO *io)
Notification from IO that it has been updated (remote open).
std::list< Block * > BlockList_t
Definition: XrdPfcFile.hh:292
IoMap_i m_current_io
IO object to be used for prefetching.
Definition: XrdPfcFile.hh:281
IO * get_io() const
Definition: XrdPfcFile.hh:86
DirectResponseHandler(int to_wait)
Definition: XrdPfcFile.hh:127
bool FinalizeSyncBeforeExit()
Returns true if any of blocks need sync. Called from Cache::dec_ref_cnt on zero ref cnt.
bool m_ioactive_false_reported
Definition: XrdPfcFile.hh:267
void StopPrefetchingOnIO(IO *io)
bool m_prefetch
Definition: XrdPfcFile.hh:72
bool overlap(int blk, long long blk_size, long long req_off, int req_size, long long &off, long long &blk_off, long long &size)
Block * m_block
Definition: XrdPfcFile.hh:111
int m_ref_cnt
number of references from IO or sync
Definition: XrdPfcFile.hh:247
bool m_in_shutdown
file is in emergency shutdown due to irrecoverable error or unlink request
Definition: XrdPfcFile.hh:250
void BlockRemovedFromWriteQ(Block *)
Handle removal of a block from Cache's write queue.
Block * PrepareBlockRequest(int i, IO *io, bool prefetch)
std::vector< int > m_writes_during_sync
Definition: XrdPfcFile.hh:285
std::string m_filename
filename of data file on disk
Definition: XrdPfcFile.hh:256
int m_non_flushed_cnt
Definition: XrdPfcFile.hh:286
Block(File *f, IO *io, char *buf, long long off, int size, bool m_prefetch, bool cks_net)
Definition: XrdPfcFile.hh:76
BlockList_t::iterator BlockList_i
Definition: XrdPfcFile.hh:293
@ kStopped
Definition: XrdPfcFile.hh:245
vCkSum_t m_cksum_vec
Definition: XrdPfcFile.hh:74
IntList_t::iterator IntList_i
Definition: XrdPfcFile.hh:290
int VReadFromDisk(const XrdOucIOVec *readV, int n, ReadVBlockListDisk &blks_on_disk)
Access statistics.
Definition: XrdPfcInfo.hh:61
bool m_in_sync
Definition: XrdPfcFile.hh:287
Status of cached file. Can be read from and written into a binary file.
Definition: XrdPfcInfo.hh:45
std::string GetRemoteLocations() const
Definition: XrdPfcFile.hh:263
long long m_file_size
size of cached disk file for block-based operation
Definition: XrdPfcFile.hh:258
Stats m_last_stats
copy of cache stats during last purge cycle, used for per directory stat reporting
Definition: XrdPfcFile.hh:307
int GetNBlocks() const
Get number of blocks represented in download-state bit-vector.
Definition: XrdPfcInfo.hh:437
int GetNDownloadedBlocks() const
Definition: XrdPfcFile.hh:234
Definition: XrdClAnyObject.hh:26
@ kOn
Definition: XrdPfcFile.hh:245
long long m_offset
offset of cached file for block-based / hdfs operation
Definition: XrdPfcFile.hh:257
File(const std::string &path, long long offset, long long fileSize)
Constructor.
XrdOssDF * m_data_file
file handle for data file on disk
Definition: XrdPfcFile.hh:252
virtual void Done(int result)
int RequestBlocksDirect(IO *io, DirectResponseHandler *handler, IntList_t &blocks, char *buff, long long req_off, long long req_size)
bool select_current_io_or_disable_prefetching(bool skip_current)
virtual void Done(int result)
BlockSet_t::iterator BlockSet_i
Definition: XrdPfcFile.hh:299
Definition: XrdPfcFile.hh:121
bool ioActive(IO *io)
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close()
bool is_failed()
Definition: XrdPfcFile.hh:90
bool has_cksums() const
Definition: XrdPfcFile.hh:102
Statistics of cache utilisation by a File object.
Definition: XrdPfcStats.hh:31
BlockResponseHandler(Block *b)
Definition: XrdPfcFile.hh:113
Definition: XrdOucCache.hh:53
IoMap_t m_io_map
Definition: XrdPfcFile.hh:280
int m_size
Definition: XrdPfcFile.hh:68
size_t GetAccessCnt() const
Definition: XrdPfcFile.hh:231
XrdSysCondVar m_state_cond
Definition: XrdPfcFile.hh:304
@ kOff
Definition: XrdPfcFile.hh:245
void ProcessBlockRequests(BlockList_t &blks)
void dec_ref_count(Block *)
long long GetBufferSize() const
Get prefetch buffer size.
Definition: XrdPfcInfo.hh:467
int get_ref_cnt()
Definition: XrdPfcFile.hh:237
Definition: XrdSysError.hh:90
Definition: XrdSysTrace.hh:49
PrefetchState_e m_prefetch_state
Definition: XrdPfcFile.hh:312
bool is_failed()
Definition: XrdPfcFile.hh:131
bool Open()
Open file handle for data file and info file on local disk.
std::map< int, Block * > BlockMap_t
Definition: XrdPfcFile.hh:295
int GetNDownloadedBlocks() const
Get number of downloaded blocks.
Definition: XrdPfcInfo.hh:398
static File * FileOpen(const std::string &path, long long offset, long long fileSize)
Static constructor that also does Open. Returns null ptr if Open fails.
void reset_error_and_set_io(IO *io)
Definition: XrdPfcFile.hh:95
void WriteBlockToDisk(Block *b)
std::set< Block * > BlockSet_t
Definition: XrdPfcFile.hh:298
int m_refcnt
Definition: XrdPfcFile.hh:69
IO * m_io
Definition: XrdPfcFile.hh:64
@ kComplete
Definition: XrdPfcFile.hh:245
void ProcessBlockRequest(Block *b)
std::string & GetLocalPath()
Definition: XrdPfcFile.hh:215
File * m_file
Definition: XrdPfcFile.hh:63
bool req_cksum_net() const
Definition: XrdPfcFile.hh:101
bool is_finished()
Definition: XrdPfcFile.hh:129
IODetails(time_t at)
Definition: XrdPfcFile.hh:269
bool is_finished()
Definition: XrdPfcFile.hh:88
size_t GetAccessCnt() const
Get number of accesses.
Definition: XrdPfcInfo.hh:267
std::map< IO *, IODetails > IoMap_t
Definition: XrdPfcFile.hh:277
BlockMap_t m_block_map
Definition: XrdPfcFile.hh:302
bool VReadValidate(const XrdOucIOVec *readV, int n)