block_cache
static block_cache bc;
remove_transaction_listeners(block_cache* cache, cache_transaction* transaction)
add_transaction_listener(block_cache* cache, cache_transaction* transaction,
delete_transaction(block_cache* cache, cache_transaction* transaction)
lookup_transaction(block_cache* cache, int32 id)
write_blocks_in_previous_transaction(block_cache* cache,
BlockWriter::BlockWriter(block_cache* cache, size_t max)
BlockWriter::WriteBlock(block_cache* cache, cached_block* block)
BlockPrefetcher::BlockPrefetcher(block_cache* cache, off_t blockNumber, size_t numBlocks)
block_cache::block_cache(int _fd, off_t numBlocks, size_t blockSize,
block_cache::~block_cache()
block_cache::Init()
block_cache::Free(void* buffer)
block_cache::Allocate()
block_cache::FreeBlock(cached_block* block)
block_cache::NewBlock(off_t blockNumber)
block_cache::FreeBlockParentData(cached_block* block)
block_cache::RemoveUnusedBlocks(int32 count, int32 minSecondsOld)
block_cache::RemoveBlock(cached_block* block)
block_cache::DiscardBlock(cached_block* block)
block_cache::_LowMemoryHandler(void* data, uint32 resources, int32 level)
block_cache* cache = (block_cache*)data;
block_cache::_GetUnusedBlock()
mark_block_busy_reading(block_cache* cache, cached_block* block)
mark_block_unbusy_reading(block_cache* cache, cached_block* block)
wait_for_busy_reading_block(block_cache* cache, cached_block* block)
wait_for_busy_reading_blocks(block_cache* cache)
wait_for_busy_writing_block(block_cache* cache, cached_block* block)
wait_for_busy_writing_blocks(block_cache* cache)
put_cached_block(block_cache* cache, cached_block* block, WriteLocker* writeLocker = NULL)
put_cached_block(block_cache* cache, off_t blockNumber, WriteLocker* writeLocker = NULL)
get_cached_block(block_cache* cache, off_t blockNumber, bool* _allocated,
struct block_cache : DoublyLinkedListLinkImpl<block_cache> {
get_writable_cached_block(block_cache* cache, off_t blockNumber,
block_cache(int fd, off_t numBlocks, size_t blockSize,
block_cache* cache = (struct block_cache*)(addr_t)parse_expression(argv[i]);
~block_cache();
block_cache* cache = (block_cache*)(addr_t)parse_expression(argv[i]);
DoublyLinkedList<block_cache>::Iterator i = sCaches.GetIterator();
block_cache* cache = i.Next();
if (cache == (block_cache*)&sMarkCache)
static block_cache*
get_next_locked_block_cache(block_cache* last)
block_cache* cache;
cache = sCaches.GetNext((block_cache*)&sMarkCache);
sCaches.Remove((block_cache*)&sMarkCache);
sCaches.InsertBefore(sCaches.GetNext(cache), (block_cache*)&sMarkCache);
block_cache* cache = NULL;
BlockWriter(block_cache* cache,
block_cache* cache = (block_cache*)_cache;
is_valid_cache(block_cache* cache)
DoublyLinkedList<block_cache>::Iterator iterator = sCaches.GetIterator();
wait_for_notifications(block_cache* cache)
new (&sCaches) DoublyLinkedList<block_cache>;
static status_t WriteBlock(block_cache* cache,
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* fCache;
block_cache* cache = (block_cache*)_cache;
BlockPrefetcher(block_cache* cache, off_t fBlockNumber,
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* fCache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
inline bool Lock(block_cache* cache)
block_cache* cache = (block_cache*)_cache;
block_cache* cache = new(std::nothrow) block_cache(fd, numBlocks, blockSize,
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
inline void Unlock(block_cache* cache)
put_cached_block((block_cache*)_cache, blockNumber);
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
if (get_writable_cached_block((block_cache*)_cache, blockNumber,
typedef AutoLocker<block_cache, TransactionLocking> TransactionLocker;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
Action(block_cache* cache, cached_block* block)
block_cache* cache = reinterpret_cast<block_cache*>(_cache);
block_cache* fCache;
Get(block_cache* cache, cached_block* block)
Put(block_cache* cache, cached_block* block)
Read(block_cache* cache, cached_block* block)
Write(block_cache* cache, cached_block* block)
Flush(block_cache* cache, cached_block* block, bool getUnused = false)
Error(block_cache* cache, uint64 blockNumber, const char* message,
block_cache* fCache;
BlockData(block_cache* cache, cached_block* block, const char* message)
block_cache* fCache;
struct block_cache;
Action(const char* label, block_cache* cache,
block_cache* fCache;
Detach(block_cache* cache, cache_transaction* transaction,
block_cache* fCache;
Abort(block_cache* cache, cache_transaction* transaction)
block_cache* fCache;
static DoublyLinkedList<block_cache> sCaches;
static DoublyLinkedListLink<block_cache> sMarkCache;
static void mark_block_busy_reading(block_cache* cache, cached_block* block);
static void mark_block_unbusy_reading(block_cache* cache, cached_block* block);
flush_pending_notifications(block_cache* cache)
DoublyLinkedList<block_cache>::Iterator iterator = sCaches.GetIterator();
block_cache* cache = iterator.Next();
add_notification(block_cache* cache, cache_notification* notification,
notify_transaction_listeners(block_cache* cache, cache_transaction* transaction,
gCache = (block_cache*)block_cache_create(-1, MAX_BLOCKS, gBlockSize,
block_cache* gCache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache(int fd, fssh_off_t numBlocks,
~block_cache();
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = new(std::nothrow) block_cache(fd, numBlocks, blockSize,
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
put_cached_block((block_cache*)_cache, blockNumber);
block_cache* cache = (block_cache*)_cache;
static fssh_status_t write_cached_block(block_cache* cache, cached_block* block,
block_cache* cache = (block_cache*)_cache;
if (get_writable_cached_block((block_cache*)_cache, blockNumber,
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
block_cache* cache = (block_cache*)_cache;
flush_pending_notifications(block_cache* cache)
add_notification(block_cache* cache, cache_notification* notification,
notify_transaction_listeners(block_cache* cache, cache_transaction* transaction,
remove_transaction_listeners(block_cache* cache, cache_transaction* transaction)
add_transaction_listener(block_cache* cache, cache_transaction* transaction,
delete_transaction(block_cache* cache, cache_transaction* transaction)
lookup_transaction(block_cache* cache, int32_t id)
block_cache::block_cache(int _fd, fssh_off_t numBlocks, fssh_size_t blockSize,
block_cache::~block_cache()
block_cache::Init()
block_cache::Free(void* buffer)
block_cache::Allocate()
block_cache::FreeBlock(cached_block* block)
block_cache::NewBlock(fssh_off_t blockNumber)
struct block_cache;
block_cache::RemoveUnusedBlocks(int32_t maxAccessed, int32_t count)
block_cache::RemoveBlock(cached_block* block)
block_cache::DiscardBlock(cached_block* block)
put_cached_block(block_cache* cache, cached_block* block)
put_cached_block(block_cache* cache, fssh_off_t blockNumber)
get_cached_block(block_cache* cache, fssh_off_t blockNumber, bool* _allocated,
get_writable_cached_block(block_cache* cache, fssh_off_t blockNumber,
write_cached_block(block_cache* cache, cached_block* block,
wait_for_notifications(block_cache* cache)
block_cache* cache = (block_cache*)_cache;