From 9a7e5e0866c0ff0d52019d7c4aabc2b7d757ac5d Mon Sep 17 00:00:00 2001 From: Yuan Zhou Date: Fri, 14 Dec 2018 05:36:36 +0800 Subject: [PATCH] tools: adding ceph level immutable obj cache daemon The daemon is built for future integration with both RBD and RGW cache. The key components are: - domain socket based simple IPC - simple LRU policy based promotion/demotion for the cache - simple file based caching store for RADOS objs with sync IO interface - systemd service/target files for the daemon Signed-off-by: Dehao Shang Signed-off-by: Yuan Zhou --- src/common/options.cc | 16 + src/common/subsys.h | 1 + src/test/CMakeLists.txt | 1 + .../CMakeLists.txt | 35 +++ .../test_DomainSocket.cc | 209 ++++++++++++++ .../test_SimplePolicy.cc | 232 +++++++++++++++ .../ceph_immutable_object_cache/test_main.cc | 30 ++ .../test_sync_file.cc | 110 +++++++ src/tools/CMakeLists.txt | 1 + .../CMakeLists.txt | 23 ++ .../CacheClient.cc | 228 +++++++++++++++ .../ceph_immutable_object_cache/CacheClient.h | 56 ++++ .../CacheController.cc | 95 ++++++ .../CacheController.h | 53 ++++ .../CacheServer.cc | 114 ++++++++ .../ceph_immutable_object_cache/CacheServer.h | 55 ++++ .../CacheSession.cc | 108 +++++++ .../CacheSession.h | 58 ++++ .../ObjectCacheFile.cc | 111 +++++++ .../ObjectCacheFile.h | 47 +++ .../ObjectCacheStore.cc | 273 ++++++++++++++++++ .../ObjectCacheStore.h | 77 +++++ .../ceph_immutable_object_cache/Policy.h | 33 +++ .../SimplePolicy.cc | 219 ++++++++++++++ .../SimplePolicy.h | 66 +++++ .../SocketCommon.h | 55 ++++ src/tools/ceph_immutable_object_cache/main.cc | 84 ++++++ systemd/ceph-immutable-object-cache.target | 6 + .../ceph-immutable-object-cache@.service.in | 24 ++ 29 files changed, 2420 insertions(+) create mode 100644 src/test/ceph_immutable_object_cache/CMakeLists.txt create mode 100644 src/test/ceph_immutable_object_cache/test_DomainSocket.cc create mode 100644 src/test/ceph_immutable_object_cache/test_SimplePolicy.cc create mode 100644 src/test/ceph_immutable_object_cache/test_main.cc create mode 100644 src/test/ceph_immutable_object_cache/test_sync_file.cc create mode 100644 src/tools/ceph_immutable_object_cache/CMakeLists.txt create mode 100644 src/tools/ceph_immutable_object_cache/CacheClient.cc create mode 100644 src/tools/ceph_immutable_object_cache/CacheClient.h create mode 100644 src/tools/ceph_immutable_object_cache/CacheController.cc create mode 100644 src/tools/ceph_immutable_object_cache/CacheController.h create mode 100644 src/tools/ceph_immutable_object_cache/CacheServer.cc create mode 100644 src/tools/ceph_immutable_object_cache/CacheServer.h create mode 100644 src/tools/ceph_immutable_object_cache/CacheSession.cc create mode 100644 src/tools/ceph_immutable_object_cache/CacheSession.h create mode 100644 src/tools/ceph_immutable_object_cache/ObjectCacheFile.cc create mode 100644 src/tools/ceph_immutable_object_cache/ObjectCacheFile.h create mode 100644 src/tools/ceph_immutable_object_cache/ObjectCacheStore.cc create mode 100644 src/tools/ceph_immutable_object_cache/ObjectCacheStore.h create mode 100644 src/tools/ceph_immutable_object_cache/Policy.h create mode 100644 src/tools/ceph_immutable_object_cache/SimplePolicy.cc create mode 100644 src/tools/ceph_immutable_object_cache/SimplePolicy.h create mode 100644 src/tools/ceph_immutable_object_cache/SocketCommon.h create mode 100644 src/tools/ceph_immutable_object_cache/main.cc create mode 100644 systemd/ceph-immutable-object-cache.target create mode 100644 systemd/ceph-immutable-object-cache@.service.in diff --git a/src/common/options.cc b/src/common/options.cc index a6b0be73384dd..be3d63fa11353 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -7035,6 +7035,22 @@ static std::vector