X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fos%2Ffilestore%2FCollectionIndex.h;fp=src%2Fceph%2Fsrc%2Fos%2Ffilestore%2FCollectionIndex.h;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=7c57a38b564744a6b01751871429d06fbc699c0f;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/os/filestore/CollectionIndex.h b/src/ceph/src/os/filestore/CollectionIndex.h deleted file mode 100644 index 7c57a38..0000000 --- a/src/ceph/src/os/filestore/CollectionIndex.h +++ /dev/null @@ -1,203 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2004-2006 Sage Weil - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef OS_COLLECTIONINDEX_H -#define OS_COLLECTIONINDEX_H - -#include -#include -#include "include/memory.h" - -#include "osd/osd_types.h" -#include "include/object.h" -#include "common/RWLock.h" - -/** - CollectionIndex provides an interface for manipulating indexed collections - */ -class CollectionIndex { -public: - CephContext* cct; -protected: - /** - * Object encapsulating a returned path. - * - * A path to an object (existent or non-existent) becomes invalid - * when a different object is created in the index. Path stores - * a shared_ptr to the CollectionIndex to keep the index alive - * during its lifetime. - * @see IndexManager - * @see self_ref - * @see set_ref - */ - class Path { - public: - /// Returned path - string full_path; - /// Ref to parent Index - CollectionIndex* parent_ref; - /// coll_t for parent Index - coll_t parent_coll; - - /// Normal Constructor - Path( - string path, ///< [in] Path to return. - CollectionIndex* ref) - : full_path(path), parent_ref(ref), parent_coll(parent_ref->coll()) {} - - /// Debugging Constructor - Path( - string path, ///< [in] Path to return. - const coll_t& coll) ///< [in] collection - : full_path(path), parent_coll(coll) {} - - /// Getter for the stored path. - const char *path() const { return full_path.c_str(); } - - /// Getter for collection - const coll_t& coll() const { return parent_coll; } - - /// Getter for parent - CollectionIndex* get_index() const { - return parent_ref; - } - }; - public: - - RWLock access_lock; - /// Type of returned paths - typedef ceph::shared_ptr IndexedPath; - - static IndexedPath get_testing_path(string path, coll_t collection) { - return std::make_shared(path, collection); - } - - static const uint32_t FLAT_INDEX_TAG = 0; - static const uint32_t HASH_INDEX_TAG = 1; - static const uint32_t HASH_INDEX_TAG_2 = 2; - static const uint32_t HOBJECT_WITH_POOL = 3; - /** - * For tracking Filestore collection versions. - * - * @return Collection version represented by the Index implementation - */ - virtual uint32_t collection_version() = 0; - - /** - * Returns the collection managed by this CollectionIndex - */ - virtual coll_t coll() const = 0; - - - /** - * Initializes the index. - * - * @return Error Code, 0 for success - */ - virtual int init() = 0; - - /** - * Cleanup before replaying journal - * - * Index implemenations may need to perform compound operations - * which may leave the collection unstable if interupted. cleanup - * is called on mount to allow the CollectionIndex implementation - * to stabilize. - * - * @see HashIndex - * @return Error Code, 0 for success - */ - virtual int cleanup() = 0; - - /** - * Call when a file is created using a path returned from lookup. - * - * @return Error Code, 0 for success - */ - virtual int created( - const ghobject_t &oid, ///< [in] Created object. - const char *path ///< [in] Path to created object. - ) = 0; - - /** - * Removes oid from the collection - * - * @return Error Code, 0 for success - */ - virtual int unlink( - const ghobject_t &oid ///< [in] Object to remove - ) = 0; - - /** - * Gets the IndexedPath for oid. - * - * @return Error Code, 0 for success - */ - virtual int lookup( - const ghobject_t &oid, ///< [in] Object to lookup - IndexedPath *path, ///< [out] Path to object - int *hardlink ///< [out] number of hard links of this object. *hardlink=0 mean object no-exist. - ) = 0; - - /** - * Moves objects matching @e match in the lsb @e bits - * - * dest and this must be the same subclass - * - * @return Error Code, 0 for success - */ - virtual int split( - uint32_t match, //< [in] value to match - uint32_t bits, //< [in] bits to check - CollectionIndex* dest //< [in] destination index - ) { ceph_abort(); return 0; } - - - /// List contents of collection by hash - virtual int collection_list_partial( - const ghobject_t &start, ///< [in] object at which to start - const ghobject_t &end, ///< [in] list only objects < end - int max_count, ///< [in] return at most max_count objects - vector *ls, ///< [out] Listed objects - ghobject_t *next ///< [out] Next object to list - ) = 0; - - /// Call prior to removing directory - virtual int prep_delete() { return 0; } - - CollectionIndex(CephContext* cct, const coll_t& collection) - : cct(cct), access_lock("CollectionIndex::access_lock", true, false) {} - - /* - * Pre-hash the collection, this collection should map to a PG folder. - * - * @param pg_num - pg number of the pool this collection belongs to. - * @param expected_num_objs - expected number of objects in this collection. - * @Return 0 on success, an error code otherwise. - */ - virtual int pre_hash_collection( - uint32_t pg_num, ///< [in] pg number of the pool this collection belongs to - uint64_t expected_num_objs ///< [in] expected number of objects this collection has - ) { ceph_abort(); return 0; } - - virtual int apply_layout_settings() { ceph_abort(); return 0; } - - /// Read index-wide settings (should be called after construction) - virtual int read_settings() { return 0; } - - /// Virtual destructor - virtual ~CollectionIndex() {} -}; - -#endif