![]() |
CernVM-FS
2.12.0
|
#include <quota.h>
Public Types | |
enum | Capabilities { kCapIntrospectSize = 0, kCapIntrospectCleanupRate, kCapList, kCapShrink, kCapListeners } |
Public Member Functions | |
QuotaManager () | |
virtual | ~QuotaManager () |
virtual bool | HasCapability (Capabilities capability)=0 |
virtual void | Insert (const shash::Any &hash, const uint64_t size, const std::string &description)=0 |
virtual void | InsertVolatile (const shash::Any &hash, const uint64_t size, const std::string &description)=0 |
virtual bool | Pin (const shash::Any &hash, const uint64_t size, const std::string &description, const bool is_catalog)=0 |
virtual void | Unpin (const shash::Any &hash)=0 |
virtual void | Touch (const shash::Any &hash)=0 |
virtual void | Remove (const shash::Any &file)=0 |
virtual bool | Cleanup (const uint64_t leave_size)=0 |
virtual std::vector< std::string > | List ()=0 |
virtual std::vector< std::string > | ListPinned ()=0 |
virtual std::vector< std::string > | ListCatalogs ()=0 |
virtual std::vector< std::string > | ListVolatile ()=0 |
virtual uint64_t | GetMaxFileSize ()=0 |
virtual uint64_t | GetCapacity ()=0 |
virtual uint64_t | GetSize ()=0 |
virtual uint64_t | GetSizePinned ()=0 |
virtual bool | SetLimit (uint64_t limit)=0 |
virtual uint64_t | GetCleanupRate (uint64_t period_s)=0 |
virtual void | Spawn ()=0 |
virtual pid_t | GetPid ()=0 |
virtual uint32_t | GetProtocolRevision ()=0 |
virtual void | RegisterBackChannel (int back_channel[2], const std::string &channel_id)=0 |
virtual void | UnregisterBackChannel (int back_channel[2], const std::string &channel_id)=0 |
void | BroadcastBackchannels (const std::string &message) |
Static Public Attributes | |
static const uint32_t | kProtocolRevision = 2 |
Protected Member Functions | |
void | LockBackChannels () |
void | UnlockBackChannels () |
Protected Attributes | |
std::map< shash::Md5, int > | back_channels_ |
pthread_mutex_t * | lock_back_channels_ |
uint32_t | protocol_revision_ |
Additional Inherited Members | |
![]() | |
SingleCopy () | |
This file is part of the CernVM File System. The QuotaManager keeps track of the cache contents. It is informed by the cache manager about opens and inserts. The cache manager picks a quota manager that fits to the backend storage (e.g. POSIX, key-value store). File catalogs are "pinned" in the quota manager. Since they remain loaded (virtual file descriptor stays open), it does not make sense to remove them. Regular files might get pinned occasionally as well, for instance for the CernVM "core files".
Multiple cache managers can share a single quota manager instance, as it is done for the local shared hard disk cache.
Sometimes it is necessary that a quota manager instance gives feedback to its users. This is where back channels are used. Users can register a back channel, which gets informed for instance if the number of pinned catalogs get large and should be released.
QuotaManager::QuotaManager | ( | ) |
void QuotaManager::BroadcastBackchannels | ( | const std::string & | message | ) |
Definition at line 21 of file quota.cc.
Referenced by ExternalCacheManager::MainRead().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by cvmfs::cvmfs_statfs().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by NCleanup24MagicXattr::FinalizeValue(), and TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by cvmfs::cvmfs_statfs(), and TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by cvmfs::cvmfs_statfs(), NCleanup24MagicXattr::FinalizeValue(), TalkManager::MainResponder(), and Spawn().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
inlineprotected |
Definition at line 97 of file quota.h.
Referenced by PosixQuotaManager::MainCommandServer(), ExternalQuotaManager::RegisterBackChannel(), and ExternalQuotaManager::UnregisterBackChannel().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by CacheManager::OpenPinned(), and cvmfs::Pin().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by quota::RegisterUnpinListener(), and quota::RegisterWatchdogListener().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by cvmfs::Evict().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by TalkManager::MainResponder().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by Spawn().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
|
inlineprotected |
Definition at line 101 of file quota.h.
Referenced by PosixQuotaManager::MainCommandServer(), ExternalQuotaManager::RegisterBackChannel(), and ExternalQuotaManager::UnregisterBackChannel().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by catalog::ClientCatalogManager::UnloadCatalog(), and catalog::ClientCatalogManager::~ClientCatalogManager().
|
pure virtual |
Implemented in ExternalQuotaManager, NoopQuotaManager, and PosixQuotaManager.
Referenced by quota::UnregisterListener().
|
protected |
Hashes over the channel identifier mapped to writing ends of pipes.
Definition at line 95 of file quota.h.
Referenced by PosixQuotaManager::MainCommandServer(), ExternalQuotaManager::RegisterBackChannel(), ExternalQuotaManager::UnregisterBackChannel(), and ~QuotaManager().
|
static |
Quota manager protocol revision. Revision 1:
Definition at line 45 of file quota.h.
Referenced by PosixQuotaManager::MainCommandServer().
|
protected |
Definition at line 96 of file quota.h.
Referenced by LockBackChannels(), QuotaManager(), UnlockBackChannels(), and ~QuotaManager().
|
protected |
Protocol of the running cache manager instance. Needs to be figured out and set during initialization of concrete instances.
Definition at line 110 of file quota.h.
Referenced by PosixQuotaManager::Create(), PosixQuotaManager::CreateShared(), PosixQuotaManager::RegisterBackChannel(), and PosixQuotaManager::UnregisterBackChannel().