1 #ifndef __XRDPFC_FILE_HH__
2 #define __XRDPFC_FILE_HH__
45 class BlockResponseHandler;
46 class DirectResponseHandler;
49 struct ReadVBlockListRAM;
50 struct ReadVChunkListRAM;
51 struct ReadVBlockListDisk;
52 struct ReadVChunkListDisk;
137 Block(
File *f,
IO *io,
void *rid,
char *buf,
long long off,
int size,
int rsize,
188 void Done(
int result)
override;
207 void Done(
int result)
override;
220 static File*
FileOpen(
const std::string &path,
long long offset,
long long fileSize);
232 int Read(
IO *io,
char* buff,
long long offset,
int size,
ReadReqRH *rh);
272 const char*
lPath()
const;
306 File(
const std::string &path,
long long offset,
long long fileSize);
void initiate_emergency_shutdown()
int m_num_blocks
Definition: XrdPfcFile.hh:351
char * m_buf
Definition: XrdPfcFile.hh:102
Definition: XrdPfcFile.hh:99
void BlockRemovedFromWriteQ(Block *)
Handle removal of a block from Cache's write queue.
void inc_ref_count(Block *b)
Definition: XrdPfcFile.hh:420
bool m_req_cksum_net
Definition: XrdPfcFile.hh:131
PrefetchState_e
Definition: XrdPfcFile.hh:363
std::vector< int > m_writes_during_sync
Definition: XrdPfcFile.hh:334
void dec_ref_count(Block *b, int count=1)
Definition: XrdPfcFile.hh:428
int m_n_cksum_errors
Definition: XrdPfcFile.hh:133
size_t GetAccessCnt() const
Get number of accesses.
Definition: XrdPfcInfo.hh:265
Definition: XrdPfcFile.hh:74
void insert_remote_location(const std::string &loc)
std::vector< ChunkRequest >::iterator vChunkRequest_i
Definition: XrdPfcFile.hh:112
void ProcessDirectReadFinished(ReadRequest *rreq, int bytes_read, int error_cond)
Definition: XrdPfcFile.hh:116
void FinalizeReadRequest(ReadRequest *rreq)
bool select_current_io_or_disable_prefetching(bool skip_current)
std::list< Block * > BlockList_t
Definition: XrdPfcFile.hh:176
File * get_file() const
Definition: XrdPfcFile.hh:150
int m_size
Definition: XrdPfcFile.hh:125
std::map< int, Block * > BlockMap_t
Definition: XrdPfcFile.hh:345
int GetBlockSize() const
Definition: XrdPfcFile.hh:291
Stats m_stats
cache statistics for this instance
Definition: XrdPfcFile.hh:355
void Sync()
Sync file cache inf o and output data with disk.
long long GetFileSize()
Definition: XrdPfcFile.hh:279
int m_to_wait
Definition: XrdPfcFile.hh:199
void * get_req_id() const
Definition: XrdPfcFile.hh:152
bool m_detach_time_logged
Definition: XrdPfcFile.hh:337
unsigned short m_seq_id
Definition: XrdPfcFile.hh:64
Base cache-io class that implements some XrdOucCacheIO abstract methods.
Definition: XrdPfcIO.hh:17
IntList_t::iterator IntList_i
Definition: XrdPfcFile.hh:343
int Read(IO *io, char *buff, long long offset, int size, ReadReqRH *rh)
Normal read.
IO * m_io
Definition: XrdPfcFile.hh:120
ReadRequest * m_read_req
Definition: XrdPfcFile.hh:101
int m_errno
Definition: XrdPfcFile.hh:201
bool m_direct_done
Definition: XrdPfcFile.hh:85
Info m_cfi
download status of file blocks and access statistics
Definition: XrdPfcFile.hh:317
Status of cached file. Can be read from and written into a binary file.
Definition: XrdPfcInfo.hh:44
Access statistics.
Definition: XrdPfcInfo.hh:60
void set_error(int err)
Definition: XrdPfcFile.hh:159
int m_refcnt
Definition: XrdPfcFile.hh:127
const char * lPath() const
Log path.
Definition: XrdPfcFile.hh:181
bool ioActive(IO *io)
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close()
float m_prefetch_score
Definition: XrdPfcFile.hh:369
long long m_bytes_read
Definition: XrdPfcFile.hh:79
void set_downloaded()
Definition: XrdPfcFile.hh:158
float GetPrefetchScore() const
char * get_buff() const
Definition: XrdPfcFile.hh:145
void ProcessBlockSuccess(Block *b, ChunkRequest &creq)
bool FinalizeSyncBeforeExit()
Returns true if any of blocks need sync. Called from Cache::dec_ref_cnt on zero ref cnt...
void reset_error_and_set_io(IO *io, void *rid)
Definition: XrdPfcFile.hh:162
void Done(int result) override
int GetNDownloadedBlocks() const
Definition: XrdPfcFile.hh:293
Stats m_stats
Definition: XrdPfcFile.hh:81
DirectResponseHandler(File *file, ReadRequest *rreq, int to_wait)
Definition: XrdPfcFile.hh:203
int inc_ref_cnt()
Definition: XrdPfcFile.hh:298
vCkSum_t & ref_cksum_vec()
Definition: XrdPfcFile.hh:171
std::vector< uint32_t > vCkSum_t
Definition: XrdPfcTypes.hh:27
const Stats & RefStats() const
Definition: XrdPfcFile.hh:294
Block(File *f, IO *io, void *rid, char *buf, long long off, int size, int rsize, bool m_prefetch, bool cks_net)
Definition: XrdPfcFile.hh:137
int m_n_chunks
Definition: XrdPfcFile.hh:63
int ReadBlocksFromDisk(std::vector< XrdOucIOVec > &ioVec, int expected_size)
int m_errno
Definition: XrdPfcFile.hh:128
Definition: XrdSysError.hh:89
int get_req_size() const
Definition: XrdPfcFile.hh:147
int m_size
Definition: XrdPfcFile.hh:104
int m_ios_in_detach
Number of IO objects to which we replied false to ioActive() and will be removed soon.
Definition: XrdPfcFile.hh:330
XrdOssDF * m_data_file
file handle for data file on disk
Definition: XrdPfcFile.hh:315
Definition: XrdPfcFile.hh:60
void calc_prefetch_score()
Definition: XrdPfcFile.hh:373
int GetPrefetchCountOnIO(IO *io)
Definition: XrdSysTrace.hh:48
IoSet_t m_io_set
Definition: XrdPfcFile.hh:328
Definition: XrdSysPthread.hh:164
int m_n_chunk_reqs
Definition: XrdPfcFile.hh:83
long long m_off
Definition: XrdPfcFile.hh:103
int * ptr_n_cksum_errors()
Definition: XrdPfcFile.hh:173
static const char * m_traceID
Definition: XrdPfcFile.hh:311
vChunkRequest_t m_chunk_reqs
Definition: XrdPfcFile.hh:135
int m_prefetch_hit_cnt
Definition: XrdPfcFile.hh:368
BlockMap_t m_block_map
Definition: XrdPfcFile.hh:348
ChunkRequest(ReadRequest *rreq, char *buf, long long off, int size)
Definition: XrdPfcFile.hh:106
XrdSysMutex m_mutex
Definition: XrdPfcFile.hh:196
XrdOssDF * m_info_file
file handle for data-info file on disk
Definition: XrdPfcFile.hh:316
void RequestSyncOfDetachStats()
Flags that detach stats should be written out in final sync. Called from CacheIO upon Detach...
Definition: XrdPfcFile.hh:363
bool overlap(int blk, long long blk_size, long long req_off, int req_size, long long &off, long long &blk_off, int &size)
void inc_prefetch_hit_cnt(int phc)
Definition: XrdPfcFile.hh:372
const Info::AStat * GetLastAccessStats() const
Definition: XrdPfcFile.hh:289
Stats m_last_stats
copy of cache stats during last purge cycle, used for per directory stat reporting ...
Definition: XrdPfcFile.hh:356
void * m_req_id
Definition: XrdPfcFile.hh:121
Definition: XrdSysPthread.hh:78
ReadReqRH * m_rh
Definition: XrdPfcFile.hh:77
bool is_ok() const
Definition: XrdPfcFile.hh:155
std::string & GetLocalPath()
Definition: XrdPfcFile.hh:274
int GetNBlocks() const
Definition: XrdPfcFile.hh:292
int m_req_size
Definition: XrdPfcFile.hh:126
Definition: XrdPfcFile.hh:363
File(const std::string &path, long long offset, long long fileSize)
Constructor.
Definition: XrdOucIOVec.hh:40
bool m_downloaded
Definition: XrdPfcFile.hh:129
bool is_failed() const
Definition: XrdPfcFile.hh:156
bool is_complete() const
Definition: XrdPfcFile.hh:93
BlockResponseHandler(Block *b)
Definition: XrdPfcFile.hh:186
const AStat * GetLastAccessStats() const
Get latest access stats.
bool m_sync_done
Definition: XrdPfcFile.hh:84
void inc_prefetch_read_cnt(int prc)
Definition: XrdPfcFile.hh:371
void ProcessBlockResponse(Block *b, int res)
void ProcessBlockRequest(Block *b)
long long m_offset
Definition: XrdPfcFile.hh:124
long long m_offset
offset of cached file for block-based / hdfs operation
Definition: XrdPfcFile.hh:320
std::list< int > IntList_t
Definition: XrdPfcFile.hh:342
IO * get_io() const
Definition: XrdPfcFile.hh:151
File * m_file
Definition: XrdPfcFile.hh:119
int get_ref_cnt()
Definition: XrdPfcFile.hh:297
Statistics of cache utilisation by a File object.
Definition: XrdPfcStats.hh:30
std::vector< ChunkRequest > vChunkRequest_t
Definition: XrdPfcFile.hh:111
long long get_offset() const
Definition: XrdPfcFile.hh:148
Definition: XrdOucCache.hh:52
XrdSysCondVar m_state_cond
Definition: XrdPfcFile.hh:349
void update_error_cond(int ec)
Definition: XrdPfcFile.hh:91
Block * PrepareBlockRequest(int i, IO *io, void *req_id, bool prefetch)
int m_non_flushed_cnt
Definition: XrdPfcFile.hh:335
void WriteBlockToDisk(Block *b)
std::list< Block * >::iterator BlockList_i
Definition: XrdPfcFile.hh:177
bool m_in_sync
Definition: XrdPfcFile.hh:336
int ReadOpusCoalescere(IO *io, const XrdOucIOVec *readV, int readVnum, ReadReqRH *rh, const char *tpfx)
Definition: XrdPfcFile.hh:193
XrdOucCacheIOCB * m_iocb
Definition: XrdPfcFile.hh:65
int GetNBlocks() const
Get number of blocks represented in download-state bit-vector.
Definition: XrdPfcInfo.hh:441
IO * m_io
Definition: XrdPfcFile.hh:76
File * m_file
Definition: XrdPfcFile.hh:197
long long m_file_size
size of cached disk file for block-based operation
Definition: XrdPfcFile.hh:321
bool req_cksum_net() const
Definition: XrdPfcFile.hh:169
Definition: XrdPfcFile.hh:212
vCkSum_t m_cksum_vec
Definition: XrdPfcFile.hh:132
void ioUpdated(IO *io)
Notification from IO that it has been updated (remote open).
ReadReqRH(unsigned short sid, XrdOucCacheIOCB *iocb)
Definition: XrdPfcFile.hh:67
Block * m_block
Definition: XrdPfcFile.hh:184
int return_value() const
Definition: XrdPfcFile.hh:94
Definition: XrdPfcFile.hh:363
void RequestBlocksDirect(IO *io, DirectResponseHandler *handler, std::vector< XrdOucIOVec > &ioVec, int expected_size)
Definition: XrdPfcFile.hh:363
int m_prefetch_read_cnt
Definition: XrdPfcFile.hh:367
int m_error_cond
Definition: XrdPfcFile.hh:80
std::set< std::string > m_remote_locations
Gathered in AddIO / ioUpdate / ioActive.
Definition: XrdPfcFile.hh:358
int m_expected_size
Definition: XrdPfcFile.hh:62
void Done(int result) override
int offsetIdx(int idx) const
char * m_buff
Definition: XrdPfcFile.hh:123
BlockMap_t::iterator BlockMap_i
Definition: XrdPfcFile.hh:346
std::string GetRemoteLocations() const
ReadRequest(IO *io, ReadReqRH *rh)
Definition: XrdPfcFile.hh:87
bool has_cksums() const
Definition: XrdPfcFile.hh:170
bool m_prefetch
Definition: XrdPfcFile.hh:130
int ReadV(IO *io, const XrdOucIOVec *readV, int readVnum, ReadReqRH *rh)
Vector read.
std::set< IO * > IoSet_t
Definition: XrdPfcFile.hh:325
bool is_in_emergency_shutdown()
Definition: XrdPfcFile.hh:302
void StopPrefetchingOnIO(IO *io)
int get_size() const
Definition: XrdPfcFile.hh:146
IoSet_i m_current_io
IO object to be used for prefetching.
Definition: XrdPfcFile.hh:329
IoSet_t::iterator IoSet_i
Definition: XrdPfcFile.hh:326
long long m_block_size
Definition: XrdPfcFile.hh:350
void ProcessBlockRequests(BlockList_t &blks)
std::string m_filename
filename of data file on disk
Definition: XrdPfcFile.hh:319
int m_ref_cnt
number of references from IO or sync
Definition: XrdPfcFile.hh:313
bool m_in_shutdown
file is in emergency shutdown due to irrecoverable error or unlink request
Definition: XrdPfcFile.hh:338
Definition: XrdPfcFile.hh:363
bool Open()
Open file handle for data file and info file on local disk.
void BlocksRemovedFromWriteQ(std::list< Block * > &)
Handle removal of a set of blocks from Cache's write queue.
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.
int get_n_cksum_errors()
Definition: XrdPfcFile.hh:172
Stats DeltaStatsFromLastCall()
int dec_ref_cnt()
Definition: XrdPfcFile.hh:299
PrefetchState_e m_prefetch_state
Definition: XrdPfcFile.hh:365
ReadRequest * m_read_req
Definition: XrdPfcFile.hh:198
bool is_finished() const
Definition: XrdPfcFile.hh:154
long long GetBufferSize() const
Get prefetch buffer size.
Definition: XrdPfcInfo.hh:473
int get_error() const
Definition: XrdPfcFile.hh:160
int m_bytes_read
Definition: XrdPfcFile.hh:200
int GetNDownloadedBlocks() const
Get number of downloaded blocks.
Definition: XrdPfcInfo.hh:402
void ProcessBlockError(Block *b, ReadRequest *rreq)
size_t GetAccessCnt() const
Definition: XrdPfcFile.hh:290