#include <XrdFileCacheFile.hh>
Classes | |
struct | IODetails |
Public Member Functions | |
File (const std::string &path, long long offset, long long fileSize) | |
Constructor. | |
~File () | |
Destructor. | |
void | BlockRemovedFromWriteQ (Block *) |
Handle removal of a block from Cache's write queue. | |
bool | Open () |
Open file handle for data file and info file on local disk. | |
int | ReadV (IO *io, const XrdOucIOVec *readV, int n) |
Vector read from disk if block is already downloaded, else ReadV from client. | |
int | Read (IO *io, char *buff, long long offset, int size) |
Normal read. | |
bool | isOpen () const |
Data and cinfo files are open. | |
bool | ioActive (IO *io) |
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close(). | |
void | RequestSyncOfDetachStats () |
Flags that detach stats should be written out in final sync. Called from CacheIO upon Detach. | |
bool | FinalizeSyncBeforeExit () |
Returns true if any of blocks need sync. Called from Cache::dec_ref_cnt on zero ref cnt. | |
void | Sync () |
Sync file cache inf o and output data with disk. | |
Stats & | GetStats () |
Reference to prefetch statistics. | |
void | ProcessBlockResponse (BlockResponseHandler *brh, int res) |
void | WriteBlockToDisk (Block *b) |
void | Prefetch () |
float | GetPrefetchScore () const |
const char * | lPath () const |
Log path. | |
std::string & | GetLocalPath () |
XrdSysError * | GetLog () |
XrdSysTrace * | GetTrace () |
long long | GetFileSize () |
void | AddIO (IO *io) |
int | GetPrefetchCountOnIO (IO *io) |
void | StopPrefetchingOnIO (IO *io) |
void | RemoveIO (IO *io) |
int | get_ref_cnt () |
int | inc_ref_cnt () |
int | dec_ref_cnt () |
Static Public Member Functions | |
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. | |
Private Types | |
enum | PrefetchState_e { kOff = -1, kOn, kHold, kStopped, kComplete } |
typedef std::map< IO *, IODetails > | IoMap_t |
typedef IoMap_t::iterator | IoMap_i |
typedef std::list< int > | IntList_t |
typedef IntList_t::iterator | IntList_i |
typedef std::list< Block * > | BlockList_t |
typedef BlockList_t::iterator | BlockList_i |
typedef std::map< int, Block * > | BlockMap_t |
typedef BlockMap_t::iterator | BlockMap_i |
Private Member Functions | |
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 * | PrepareBlockRequest (int i, IO *io, bool prefetch) |
void | ProcessBlockRequest (Block *b, bool prefetch) |
void | ProcessBlockRequests (BlockList_t &blks, bool prefetch) |
int | RequestBlocksDirect (IO *io, DirectResponseHandler *handler, IntList_t &blocks, char *buff, long long req_off, long long req_size) |
int | ReadBlocksFromDisk (IntList_t &blocks, char *req_buf, long long req_off, long long req_size) |
bool | VReadValidate (const XrdOucIOVec *readV, int n) |
bool | VReadPreProcess (IO *io, const XrdOucIOVec *readV, int n, ReadVBlockListRAM &blks_to_process, ReadVBlockListDisk &blks_on_disk, std::vector< XrdOucIOVec > &chunkVec) |
int | VReadFromDisk (const XrdOucIOVec *readV, int n, ReadVBlockListDisk &blks_on_disk) |
int | VReadProcessBlocks (IO *io, const XrdOucIOVec *readV, int n, std::vector< ReadVChunkListRAM > &blks_to_process, std::vector< ReadVChunkListRAM > &blks_rocessed) |
long long | BufferSize () |
void | inc_ref_count (Block *) |
void | dec_ref_count (Block *) |
void | free_block (Block *) |
bool | select_current_io_or_disable_prefetching (bool skip_current) |
int | offsetIdx (int idx) |
Private Attributes | |
int | m_ref_cnt |
number of references from IO or sync | |
bool | m_is_open |
open state | |
XrdOssDF * | m_output |
file handle for data file on disk | |
XrdOssDF * | m_infoFile |
file handle for data-info file on disk | |
Info | m_cfi |
download status of file blocks and access statistics | |
std::string | m_filename |
filename of data file on disk | |
long long | m_offset |
offset of cached file for block-based / hdfs operation | |
long long | m_fileSize |
size of cached disk file for block-based operation | |
IoMap_t | m_io_map |
IoMap_i | m_current_io |
IO object to be used for prefetching. | |
int | m_ios_in_detach |
Number of IO objects to which we replied false to ioActive() and will be removed soon. | |
std::vector< int > | m_writes_during_sync |
int | m_non_flushed_cnt |
bool | m_in_sync |
BlockMap_t | m_block_map |
XrdSysCondVar | m_downloadCond |
Stats | m_stats |
cache statistics, used in IO detach | |
PrefetchState_e | m_prefetchState |
int | m_prefetchReadCnt |
int | m_prefetchHitCnt |
float | m_prefetchScore |
bool | m_detachTimeIsLogged |
Static Private Attributes | |
static const char * | m_traceID |
typedef BlockList_t::iterator XrdFileCache::File::BlockList_i [private] |
typedef std::list<Block*> XrdFileCache::File::BlockList_t [private] |
typedef BlockMap_t::iterator XrdFileCache::File::BlockMap_i [private] |
typedef std::map<int, Block*> XrdFileCache::File::BlockMap_t [private] |
typedef IntList_t::iterator XrdFileCache::File::IntList_i [private] |
typedef std::list<int> XrdFileCache::File::IntList_t [private] |
typedef IoMap_t::iterator XrdFileCache::File::IoMap_i [private] |
typedef std::map<IO*, IODetails> XrdFileCache::File::IoMap_t [private] |
enum XrdFileCache::File::PrefetchState_e [private] |
XrdFileCache::File::File | ( | const std::string & | path, | |
long long | offset, | |||
long long | fileSize | |||
) |
Constructor.
XrdFileCache::File::~File | ( | ) |
Destructor.
void XrdFileCache::File::AddIO | ( | IO * | io | ) |
void XrdFileCache::File::BlockRemovedFromWriteQ | ( | Block * | ) |
Handle removal of a block from Cache's write queue.
long long XrdFileCache::File::BufferSize | ( | ) | [private] |
int XrdFileCache::File::dec_ref_cnt | ( | ) | [inline] |
References m_ref_cnt.
void XrdFileCache::File::dec_ref_count | ( | Block * | ) | [private] |
static File* XrdFileCache::File::FileOpen | ( | const std::string & | path, | |
long long | offset, | |||
long long | fileSize | |||
) | [static] |
Static constructor that also does Open. Returns null ptr if Open fails.
bool XrdFileCache::File::FinalizeSyncBeforeExit | ( | ) |
Returns true if any of blocks need sync. Called from Cache::dec_ref_cnt on zero ref cnt.
void XrdFileCache::File::free_block | ( | Block * | ) | [private] |
int XrdFileCache::File::get_ref_cnt | ( | ) | [inline] |
References m_ref_cnt.
long long XrdFileCache::File::GetFileSize | ( | ) | [inline] |
References m_fileSize.
std::string& XrdFileCache::File::GetLocalPath | ( | ) | [inline] |
References m_filename.
XrdSysError* XrdFileCache::File::GetLog | ( | ) |
int XrdFileCache::File::GetPrefetchCountOnIO | ( | IO * | io | ) |
float XrdFileCache::File::GetPrefetchScore | ( | ) | const |
Stats& XrdFileCache::File::GetStats | ( | ) | [inline] |
Reference to prefetch statistics.
References m_stats.
XrdSysTrace* XrdFileCache::File::GetTrace | ( | ) |
int XrdFileCache::File::inc_ref_cnt | ( | ) | [inline] |
References m_ref_cnt.
void XrdFileCache::File::inc_ref_count | ( | Block * | ) | [private] |
bool XrdFileCache::File::ioActive | ( | IO * | io | ) |
Initiate close. Return true if still IO active. Used in XrdPosixXrootd::Close().
bool XrdFileCache::File::isOpen | ( | ) | const [inline] |
Data and cinfo files are open.
References m_is_open.
const char* XrdFileCache::File::lPath | ( | ) | const |
Log path.
int XrdFileCache::File::offsetIdx | ( | int | idx | ) | [private] |
bool XrdFileCache::File::Open | ( | ) |
Open file handle for data file and info file on local disk.
bool XrdFileCache::File::overlap | ( | int | blk, | |
long long | blk_size, | |||
long long | req_off, | |||
int | req_size, | |||
long long & | off, | |||
long long & | blk_off, | |||
long long & | size | |||
) | [private] |
void XrdFileCache::File::Prefetch | ( | ) |
void XrdFileCache::File::ProcessBlockRequest | ( | Block * | b, | |
bool | prefetch | |||
) | [private] |
void XrdFileCache::File::ProcessBlockRequests | ( | BlockList_t & | blks, | |
bool | prefetch | |||
) | [private] |
void XrdFileCache::File::ProcessBlockResponse | ( | BlockResponseHandler * | brh, | |
int | res | |||
) |
int XrdFileCache::File::Read | ( | IO * | io, | |
char * | buff, | |||
long long | offset, | |||
int | size | |||
) |
Normal read.
int XrdFileCache::File::ReadBlocksFromDisk | ( | IntList_t & | blocks, | |
char * | req_buf, | |||
long long | req_off, | |||
long long | req_size | |||
) | [private] |
int XrdFileCache::File::ReadV | ( | IO * | io, | |
const XrdOucIOVec * | readV, | |||
int | n | |||
) |
Vector read from disk if block is already downloaded, else ReadV from client.
void XrdFileCache::File::RemoveIO | ( | IO * | io | ) |
int XrdFileCache::File::RequestBlocksDirect | ( | IO * | io, | |
DirectResponseHandler * | handler, | |||
IntList_t & | blocks, | |||
char * | buff, | |||
long long | req_off, | |||
long long | req_size | |||
) | [private] |
void XrdFileCache::File::RequestSyncOfDetachStats | ( | ) |
Flags that detach stats should be written out in final sync. Called from CacheIO upon Detach.
bool XrdFileCache::File::select_current_io_or_disable_prefetching | ( | bool | skip_current | ) | [private] |
void XrdFileCache::File::StopPrefetchingOnIO | ( | IO * | io | ) |
void XrdFileCache::File::Sync | ( | ) |
Sync file cache inf o and output data with disk.
int XrdFileCache::File::VReadFromDisk | ( | const XrdOucIOVec * | readV, | |
int | n, | |||
ReadVBlockListDisk & | blks_on_disk | |||
) | [private] |
bool XrdFileCache::File::VReadPreProcess | ( | IO * | io, | |
const XrdOucIOVec * | readV, | |||
int | n, | |||
ReadVBlockListRAM & | blks_to_process, | |||
ReadVBlockListDisk & | blks_on_disk, | |||
std::vector< XrdOucIOVec > & | chunkVec | |||
) | [private] |
int XrdFileCache::File::VReadProcessBlocks | ( | IO * | io, | |
const XrdOucIOVec * | readV, | |||
int | n, | |||
std::vector< ReadVChunkListRAM > & | blks_to_process, | |||
std::vector< ReadVChunkListRAM > & | blks_rocessed | |||
) | [private] |
bool XrdFileCache::File::VReadValidate | ( | const XrdOucIOVec * | readV, | |
int | n | |||
) | [private] |
void XrdFileCache::File::WriteBlockToDisk | ( | Block * | b | ) |
BlockMap_t XrdFileCache::File::m_block_map [private] |
Info XrdFileCache::File::m_cfi [private] |
download status of file blocks and access statistics
IoMap_i XrdFileCache::File::m_current_io [private] |
IO object to be used for prefetching.
bool XrdFileCache::File::m_detachTimeIsLogged [private] |
std::string XrdFileCache::File::m_filename [private] |
filename of data file on disk
Referenced by GetLocalPath().
long long XrdFileCache::File::m_fileSize [private] |
size of cached disk file for block-based operation
Referenced by GetFileSize().
bool XrdFileCache::File::m_in_sync [private] |
XrdOssDF* XrdFileCache::File::m_infoFile [private] |
file handle for data-info file on disk
IoMap_t XrdFileCache::File::m_io_map [private] |
int XrdFileCache::File::m_ios_in_detach [private] |
Number of IO objects to which we replied false to ioActive() and will be removed soon.
bool XrdFileCache::File::m_is_open [private] |
open state
Referenced by isOpen().
int XrdFileCache::File::m_non_flushed_cnt [private] |
long long XrdFileCache::File::m_offset [private] |
offset of cached file for block-based / hdfs operation
XrdOssDF* XrdFileCache::File::m_output [private] |
file handle for data file on disk
int XrdFileCache::File::m_prefetchHitCnt [private] |
int XrdFileCache::File::m_prefetchReadCnt [private] |
float XrdFileCache::File::m_prefetchScore [private] |
int XrdFileCache::File::m_ref_cnt [private] |
number of references from IO or sync
Referenced by dec_ref_cnt(), get_ref_cnt(), and inc_ref_cnt().
Stats XrdFileCache::File::m_stats [private] |
cache statistics, used in IO detach
Referenced by GetStats().
const char* XrdFileCache::File::m_traceID [static, private] |
std::vector<int> XrdFileCache::File::m_writes_during_sync [private] |