5 #ifndef CVMFS_QUOTA_POSIX_H_
6 #define CVMFS_QUOTA_POSIX_H_
10 #include <sys/types.h>
19 #include "gtest/gtest_prod.h"
44 const uint64_t limit,
const uint64_t cleanup_threshold,
45 const bool rebuild_database);
47 const std::string &exe_path,
48 const std::string &cache_workspace,
50 const uint64_t cleanup_threshold,
58 const std::string &description);
60 const std::string &description);
62 const std::string &description,
const bool is_catalog);
66 virtual bool Cleanup(
const uint64_t leave_size);
69 const std::string &channel_id);
71 const std::string &channel_id);
73 virtual std::vector<std::string>
List();
81 virtual bool SetLimit(uint64_t limit);
156 mask = ~(mask << (64-3));
162 mask = ~(mask << (64-3));
169 uint64_t algo_flags = hash.
algorithm - 1;
170 algo_flags = algo_flags << (64-3);
175 uint64_t algo_flags =
size >> (64-3);
176 shash::Any result(static_cast<shash::Algorithms>(algo_flags+1));
177 memcpy(result.digest,
digest, result.GetDigestSize());
236 bool Contains(
const std::string &hash_str);
237 bool DoCleanup(
const uint64_t leave_size);
238 bool EmptyTrash(
const std::vector<std::string> &trash);
251 const char *descriptions);
255 const std::string &description,
const CommandType command_type);
259 void GetLimits(uint64_t *limit, uint64_t *cleanup_threshold);
262 std::string *cache_dir,
263 std::string *workspace_dir);
265 const std::string &cache_workspace);
377 #endif // CVMFS_QUOTA_POSIX_H_
virtual uint32_t GetProtocolRevision()
sqlite3_stmt * stmt_block_
sqlite3_stmt * stmt_list_pinned_
virtual void UnregisterBackChannel(int back_channel[2], const std::string &channel_id)
std::vector< std::string > DoList(const CommandType list_command)
virtual uint64_t GetCleanupRate(uint64_t period_s)
static const unsigned kCommandBufferSize
sqlite3_stmt * stmt_list_
void GetLimits(uint64_t *limit, uint64_t *cleanup_threshold)
virtual uint64_t GetSize()
virtual bool Cleanup(const uint64_t leave_size)
static const unsigned kSqliteMemPerThread
virtual uint64_t GetMaxFileSize()
uint64_t cleanup_threshold_
bool DoCleanup(const uint64_t leave_size)
static void * MainCommandServer(void *data)
virtual void Insert(const shash::Any &hash, const uint64_t size, const std::string &description)
sqlite3_stmt * stmt_rm_batch_
bool InitDatabase(const bool rebuild_database)
int BindReturnPipe(int pipe_wronly)
bool Contains(const std::string &hash_str)
perf::MultiRecorder cleanup_recorder_
unsigned char digest[digest_size_]
virtual bool SetLimit(uint64_t limit)
virtual std::vector< std::string > ListCatalogs()
void CheckHighPinWatermark()
void GetSharedStatus(uint64_t *gauge, uint64_t *pinned)
unsigned GetDigestSize() const
std::string workspace_dir_
void MakeReturnPipe(int pipe[2])
virtual std::vector< std::string > ListPinned()
virtual uint64_t GetSizePinned()
void ManagedReadHalfPipe(int fd, void *buf, size_t nbyte)
virtual bool HasCapability(Capabilities capability)
virtual bool Pin(const shash::Any &hash, const uint64_t size, const std::string &description, const bool is_catalog)
virtual std::vector< std::string > ListVolatile()
virtual uint64_t GetCapacity()
FRIEND_TEST(T_QuotaManager, BindReturnPipe)
static const unsigned kEvictBatchSize
void SetSize(const uint64_t new_size)
shash::Any RetrieveHash() const
static const unsigned kHighPinWatermark
virtual void RegisterBackChannel(int back_channel[2], const std::string &channel_id)
void UnlinkReturnPipe(int pipe_wronly)
virtual void Remove(const shash::Any &file)
static PosixQuotaManager * Create(const std::string &cache_workspace, const uint64_t limit, const uint64_t cleanup_threshold, const bool rebuild_database)
sqlite3_stmt * stmt_touch_
void DoInsert(const shash::Any &hash, const uint64_t size, const std::string &description, const CommandType command_type)
sqlite3_stmt * stmt_list_volatile_
void ProcessCommandBunch(const unsigned num, const LruCommand *commands, const char *descriptions)
sqlite3_stmt * stmt_unblock_
virtual void Unpin(const shash::Any &hash)
PosixQuotaManager(const uint64_t limit, const uint64_t cleanup_threshold, const std::string &cache_workspace)
virtual std::vector< std::string > List()
static int MainCacheManager(int argc, char **argv)
bool EmptyTrash(const std::vector< std::string > &trash)
static const unsigned kMaxDescription
bool SetSharedLimit(uint64_t limit)
virtual void InsertVolatile(const shash::Any &hash, const uint64_t size, const std::string &description)
static const unsigned kLockFileMagicNumber
unsigned char digest[shash::kMaxDigestSize]
sqlite3_stmt * stmt_list_catalogs_
static PosixQuotaManager * CreateShared(const std::string &exe_path, const std::string &cache_workspace, const uint64_t limit, const uint64_t cleanup_threshold, bool foreground)
const unsigned kMaxDigestSize
void SetCacheMgrPid(pid_t pid_)
virtual ~PosixQuotaManager()
static void ParseDirectories(const std::string cache_workspace, std::string *cache_dir, std::string *workspace_dir)
std::map< shash::Any, uint64_t > pinned_chunks_
sqlite3_stmt * stmt_unpin_
void CloseReturnPipe(int pipe[2])
EvictCandidate(const shash::Any &h, uint64_t s, uint64_t a)
void UnbindReturnPipe(int pipe_wronly)
virtual void Touch(const shash::Any &hash)
void StoreHash(const shash::Any &hash)
static const uint64_t kVolatileFlag
sqlite3_stmt * stmt_size_