--- /dev/null
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "FreelistManager.h"
+#include "BitmapFreelistManager.h"
+
+FreelistManager *FreelistManager::create(
+ CephContext* cct,
+ string type,
+ KeyValueDB *kvdb,
+ string prefix)
+{
+ // a bit of a hack... we hard-code the prefixes here. we need to
+ // put the freelistmanagers in different prefixes because the merge
+ // op is per prefix, has to done pre-db-open, and we don't know the
+ // freelist type until after we open the db.
+ assert(prefix == "B");
+ if (type == "bitmap")
+ return new BitmapFreelistManager(cct, kvdb, "B", "b");
+ return NULL;
+}
+
+void FreelistManager::setup_merge_operators(KeyValueDB *db)
+{
+ BitmapFreelistManager::setup_merge_operator(db, "b");
+}