From 8330a9d3b17a9d85cec2c5d2b0bcd3d657f8ae65 Mon Sep 17 00:00:00 2001 From: Alja Mrak-Tadel Date: Mon, 14 Sep 2015 12:53:42 -0700 Subject: [PATCH] DeRegister/Register files in case when they are ready for prefetching. --- src/XrdFileCache/XrdFileCacheFile.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/XrdFileCache/XrdFileCacheFile.cc b/src/XrdFileCache/XrdFileCacheFile.cc index bd786965df0..53edffa52c9 100644 --- a/src/XrdFileCache/XrdFileCacheFile.cc +++ b/src/XrdFileCache/XrdFileCacheFile.cc @@ -49,7 +49,7 @@ namespace XrdPosixGlobals namespace { const int PREFETCH_MAX_ATTEMPTS = 10; -const size_t PREFETCH_MAX_BLOCKS=5; +const size_t PREFETCH_MAX_BLOCKS=10; class DiskSyncer : public XrdJob { @@ -361,6 +361,7 @@ Block* File::RequestBlock(int i, bool prefetch) if (m_prefetchState == kOn && m_block_map.size() > PREFETCH_MAX_BLOCKS) { m_prefetchState = kHold; + cache()->DeRegisterPrefetchFile(this); } return b; } @@ -840,8 +841,10 @@ void File::free_block(Block* b) cache()->RAMBlockReleased(); } - if (m_prefetchState == kHold && m_block_map.size() < PREFETCH_MAX_BLOCKS) + if (m_prefetchState == kHold && m_block_map.size() < PREFETCH_MAX_BLOCKS) { m_prefetchState = kOn; + cache()->RegisterPrefetchFile(this); + } } //------------------------------------------------------------------------------