[blobfs] Trim down dependencies, add Vmoid Registry interface
ZX-4003 #done
Change-Id: I55a1deb4a01c8b4922d4bb8ba014fde9b9c42656
diff --git a/zircon/system/ulib/blobfs/include/blobfs/allocator.h b/zircon/system/ulib/blobfs/include/blobfs/allocator.h
index 27c50be..783a527 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/allocator.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/allocator.h
@@ -16,6 +16,7 @@
#include <blobfs/format.h>
#include <blobfs/iterator/extent-iterator.h>
#include <blobfs/node-reserver.h>
+#include <blobfs/vmoid-registry.h>
#include <fbl/algorithm.h>
#include <fbl/function.h>
#include <fbl/vector.h>
@@ -31,7 +32,7 @@
using BlockRegion = fuchsia_blobfs_BlockRegion;
// An interface which controls actual access to the underlying storage.
-class SpaceManager {
+class SpaceManager : public VmoidRegistry {
public:
virtual ~SpaceManager() = default;
@@ -42,12 +43,6 @@
// Adds space for |nblocks| blocks to |map|, extending the volume if necessary.
virtual zx_status_t AddBlocks(uint64_t nblocks, RawBitmap* map) = 0;
-
- // Allocates a vmoid registering a VMO with the underlying block device.
- virtual zx_status_t AttachVmo(const zx::vmo& vmo, vmoid_t* out) = 0;
-
- // Releases an allocated vmoid.
- virtual zx_status_t DetachVmo(vmoid_t vmoid) = 0;
};
// Allocates and frees both block and node entries.
diff --git a/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h b/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
index f6f50e7..94c3a71 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
@@ -177,7 +177,7 @@
~RingBuffer() = default;
// Initializes the buffer with |blocks| blocks of size kBlobfsBlockSize.
- static zx_status_t Create(SpaceManager* space_manager, const size_t blocks,
+ static zx_status_t Create(VmoidRegistry* vmoid_registry, const size_t blocks,
const char* label, std::unique_ptr<RingBuffer>* out);
// Reserves space for |blocks| contiguous blocks in the circular buffer.
diff --git a/zircon/system/ulib/blobfs/include/blobfs/vmo-buffer.h b/zircon/system/ulib/blobfs/include/blobfs/vmo-buffer.h
index c3845f83a..092778b 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/vmo-buffer.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/vmo-buffer.h
@@ -10,8 +10,7 @@
#include <utility>
-// TODO(ZX-4003): Required for SpaceManager interface. Can we shrink this dependency?
-#include <blobfs/allocator.h>
+#include <blobfs/vmoid-registry.h>
#include <lib/fzl/owned-vmo-mapper.h>
namespace blobfs {
@@ -35,7 +34,7 @@
// underlying storage device.
//
// Should only be called on VmoBuffers which have not been initialized already.
- zx_status_t Initialize(SpaceManager* space_manager, size_t blocks, const char* label);
+ zx_status_t Initialize(VmoidRegistry* vmoid_registry, size_t blocks, const char* label);
// Returns the total amount of pending blocks which may be buffered.
size_t capacity() const { return capacity_; }
@@ -52,7 +51,7 @@
private:
void Reset();
- SpaceManager* space_manager_ = nullptr;
+ VmoidRegistry* vmoid_registry_ = nullptr;
fzl::OwnedVmoMapper mapper_;
vmoid_t vmoid_ = VMOID_INVALID;
size_t capacity_ = 0;
diff --git a/zircon/system/ulib/blobfs/include/blobfs/vmoid-registry.h b/zircon/system/ulib/blobfs/include/blobfs/vmoid-registry.h
new file mode 100644
index 0000000..b49d3a4
--- /dev/null
+++ b/zircon/system/ulib/blobfs/include/blobfs/vmoid-registry.h
@@ -0,0 +1,25 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#pragma once
+
+#include <lib/zx/vmo.h>
+#include <zircon/device/block.h>
+#include <zircon/types.h>
+
+namespace blobfs {
+
+// An interface which controls attaching and detaching VMOs with the underlying device.
+class VmoidRegistry {
+public:
+ virtual ~VmoidRegistry() = default;
+
+ // Allocates a vmoid registering a VMO with the underlying block device.
+ virtual zx_status_t AttachVmo(const zx::vmo& vmo, vmoid_t* out) = 0;
+
+ // Releases an allocated vmoid.
+ virtual zx_status_t DetachVmo(vmoid_t vmoid) = 0;
+};
+
+} // namespace blobfs
diff --git a/zircon/system/ulib/blobfs/ring-buffer.cpp b/zircon/system/ulib/blobfs/ring-buffer.cpp
index 04cb190..247f291 100644
--- a/zircon/system/ulib/blobfs/ring-buffer.cpp
+++ b/zircon/system/ulib/blobfs/ring-buffer.cpp
@@ -4,9 +4,12 @@
#include <blobfs/ring-buffer.h>
+#include <algorithm>
#include <utility>
+#include <blobfs/format.h>
#include <fbl/auto_lock.h>
+#include <fs/trace.h>
namespace blobfs {
@@ -220,10 +223,10 @@
return buffer_->MutableData((start_ + index) % buffer_->capacity());
}
-zx_status_t RingBuffer::Create(SpaceManager* space_manager, size_t blocks, const char* label,
+zx_status_t RingBuffer::Create(VmoidRegistry* vmoid_registry, size_t blocks, const char* label,
std::unique_ptr<RingBuffer>* out) {
VmoBuffer buffer;
- zx_status_t status = buffer.Initialize(space_manager, blocks, label);
+ zx_status_t status = buffer.Initialize(vmoid_registry, blocks, label);
if (status != ZX_OK) {
FS_TRACE_ERROR("RingBuffer: Failed to create internal buffer\n");
return status;
diff --git a/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp b/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
index 7b3e130..ff911c7 100644
--- a/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
+++ b/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
@@ -5,6 +5,8 @@
#include <blobfs/ring-buffer.h>
#include <blobfs/unbuffered-operations-builder.h>
+#include <blobfs/format.h>
+#include <blobfs/unbuffered-operations-builder.h>
#include <lib/zx/vmo.h>
#include <zircon/assert.h>
#include <zxtest/zxtest.h>
@@ -12,18 +14,13 @@
namespace blobfs {
namespace {
-// TODO(smklein): This interface is larger than necessary. Can we reduce it
-// to just "attach/detach vmo"?
-class MockSpaceManager : public SpaceManager {
+class MockVmoidRegistry : public VmoidRegistry {
public:
vmoid_t default_vmoid() const {
return 1;
}
private:
- const Superblock& Info() const final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
zx_status_t AttachVmo(const zx::vmo& vmo, vmoid_t* out) override {
*out = default_vmoid();
return ZX_OK;
@@ -32,46 +29,40 @@
EXPECT_EQ(default_vmoid(), vmoid);
return ZX_OK;
}
- zx_status_t AddInodes(fzl::ResizeableVmoMapper* node_map) final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
- zx_status_t AddBlocks(size_t nblocks, RawBitmap* block_map) final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
};
TEST(RingBufferTest, EmptyRingBuffer) {
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- EXPECT_EQ(ZX_ERR_INVALID_ARGS, RingBuffer::Create(&space_manager, 0, "test-buffer", &buffer));
+ EXPECT_EQ(ZX_ERR_INVALID_ARGS, RingBuffer::Create(&vmoid_registry, 0, "test-buffer", &buffer));
}
TEST(RingBufferTest, MakeRingBuffer) {
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
const size_t kBlocks = 5;
- ASSERT_OK(RingBuffer::Create(&space_manager, kBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kBlocks, "test-buffer", &buffer));
EXPECT_EQ(kBlocks, buffer->capacity());
}
TEST(RingBufferTest, ReserveOne) {
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
const size_t kBlocks = 5;
- ASSERT_OK(RingBuffer::Create(&space_manager, kBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kBlocks, "test-buffer", &buffer));
RingBufferReservation reservation;
EXPECT_EQ(0, reservation.length());
EXPECT_OK(buffer->Reserve(1, &reservation));
- EXPECT_EQ(space_manager.default_vmoid(), reservation.vmoid());
+ EXPECT_EQ(vmoid_registry.default_vmoid(), reservation.vmoid());
EXPECT_EQ(0, reservation.start());
EXPECT_EQ(1, reservation.length());
}
TEST(RingBufferTest, ReserveMove) {
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
const size_t kBlocks = 5;
- ASSERT_OK(RingBuffer::Create(&space_manager, kBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kBlocks, "test-buffer", &buffer));
RingBufferReservation reservation_a;
ASSERT_OK(buffer->Reserve(1, &reservation_a));
EXPECT_EQ(1, reservation_a.length());
@@ -88,10 +79,10 @@
}
TEST(RingBufferTest, ReserveAndFreeOutOfOrder) {
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
const size_t kBlocks = 10;
- ASSERT_OK(RingBuffer::Create(&space_manager, kBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kBlocks, "test-buffer", &buffer));
RingBufferReservation reservations[4];
ASSERT_OK(buffer->Reserve(1, &reservations[0]));
ASSERT_OK(buffer->Reserve(2, &reservations[1]));
@@ -189,9 +180,9 @@
builder.Add(operation);
const size_t kRingBufferBlocks = 5;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
RingBufferRequests request;
ASSERT_NO_FATAL_FAILURES(ReserveAndCopyRequests(buffer, builder.TakeOperations(), &request));
@@ -227,9 +218,9 @@
builder.Add(operation);
const size_t kRingBufferBlocks = 5;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
RingBufferRequests request;
ASSERT_NO_FATAL_FAILURES(ReserveAndCopyRequests(buffer, builder.TakeOperations(), &request));
@@ -272,9 +263,9 @@
builder.Add(operations[1]);
const size_t kRingBufferBlocks = 5;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
RingBufferRequests request;
ASSERT_NO_FATAL_FAILURES(ReserveAndCopyRequests(buffer, builder.TakeOperations(), &request));
@@ -307,9 +298,9 @@
MakeTestVmo(kVmoBlocks, seed, &vmo);
const size_t kRingBufferBlocks = 5;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
UnbufferedOperationsBuilder builder;
UnbufferedOperation operations[2];
@@ -373,9 +364,9 @@
builder.Add(operation);
const size_t kRingBufferBlocks = 3;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
RingBufferRequests request;
ASSERT_NO_FATAL_FAILURES(ReserveAndCopyRequests(buffer, builder.TakeOperations(), &request));
@@ -411,9 +402,9 @@
builder.Add(operation);
const size_t kRingBufferBlocks = 3;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
RingBufferRequests request;
ASSERT_EQ(ZX_ERR_NO_SPACE, buffer->Reserve(BlockCount(builder.TakeOperations()), nullptr));
@@ -435,9 +426,9 @@
MakeTestVmo(kVmoBlocks, seed, &vmo);
const size_t kRingBufferBlocks = 6;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
UnbufferedOperationsBuilder builder;
UnbufferedOperation operations[3];
@@ -496,9 +487,9 @@
MakeTestVmo(kVmoBlocks, seed, &vmo);
const size_t kRingBufferBlocks = 6;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
std::unique_ptr<RingBuffer> buffer;
- ASSERT_OK(RingBuffer::Create(&space_manager, kRingBufferBlocks, "test-buffer", &buffer));
+ ASSERT_OK(RingBuffer::Create(&vmoid_registry, kRingBufferBlocks, "test-buffer", &buffer));
UnbufferedOperationsBuilder builder;
UnbufferedOperation operations[3];
@@ -558,9 +549,9 @@
MakeTestVmo(kVmoBlocks, seed, &vmo);
const size_t kRingBufferBlocks = 4;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
VmoBuffer vmo_buffer;
- ASSERT_OK(vmo_buffer.Initialize(&space_manager, kRingBufferBlocks, "test-buffer"));
+ ASSERT_OK(vmo_buffer.Initialize(&vmoid_registry, kRingBufferBlocks, "test-buffer"));
auto buffer = std::make_unique<RingBuffer>(std::move(vmo_buffer));
RingBufferReservation reservations[3];
@@ -631,9 +622,9 @@
MakeTestVmo(kVmoBlocks, seed_b, &vmo_b);
const size_t kRingBufferBlocks = 5;
- MockSpaceManager space_manager;
+ MockVmoidRegistry vmoid_registry;
VmoBuffer vmo_buffer;
- ASSERT_OK(vmo_buffer.Initialize(&space_manager, kRingBufferBlocks, "test-buffer"));
+ ASSERT_OK(vmo_buffer.Initialize(&vmoid_registry, kRingBufferBlocks, "test-buffer"));
auto buffer = std::make_unique<RingBuffer>(std::move(vmo_buffer));
RingBufferReservation reservation;
diff --git a/zircon/system/ulib/blobfs/test/vmo-buffer-test.cpp b/zircon/system/ulib/blobfs/test/vmo-buffer-test.cpp
index e6f0670..bb3b32f 100644
--- a/zircon/system/ulib/blobfs/test/vmo-buffer-test.cpp
+++ b/zircon/system/ulib/blobfs/test/vmo-buffer-test.cpp
@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include <blobfs/vmo-buffer.h>
+
+#include <blobfs/format.h>
#include <lib/zx/vmo.h>
#include <zxtest/zxtest.h>
@@ -13,17 +15,11 @@
const size_t kCapacity = 3;
constexpr char kGoldenLabel[] = "test-vmo";
-// TODO(ZX-4003): This interface is larger than necessary. Can we reduce it
-// to just "attach/detach vmo"?
-class MockSpaceManager : public SpaceManager {
+class MockVmoidRegistry : public VmoidRegistry {
public:
bool detached() const { return detached_; }
private:
- const Superblock& Info() const final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
-
zx_status_t AttachVmo(const zx::vmo& vmo, vmoid_t* out) override {
*out = kGoldenVmoid;
return ZX_OK;
@@ -36,14 +32,6 @@
return ZX_OK;
}
- zx_status_t AddInodes(fzl::ResizeableVmoMapper* node_map) final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
-
- zx_status_t AddBlocks(size_t nblocks, RawBitmap* block_map) final {
- ZX_ASSERT_MSG(false, "Test should not invoke function: %s\n", __FUNCTION__);
- }
-
bool detached_ = false;
};
@@ -54,7 +42,7 @@
}
TEST(VmoBufferTest, TestLabel) {
- class MockManager : public MockSpaceManager {
+ class MockRegistry : public MockVmoidRegistry {
zx_status_t AttachVmo(const zx::vmo& vmo, vmoid_t* out) final {
char name[ZX_MAX_NAME_LEN];
EXPECT_OK(vmo.get_property(ZX_PROP_NAME, name, sizeof(name)));
@@ -62,65 +50,65 @@
*out = kGoldenVmoid;
return ZX_OK;
}
- } manager;
+ } registry;
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
}
TEST(VmoBufferTest, VmoidRegistration) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
{
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kGoldenVmoid, buffer.vmoid());
- EXPECT_FALSE(manager.detached());
+ EXPECT_FALSE(registry.detached());
}
- EXPECT_TRUE(manager.detached());
+ EXPECT_TRUE(registry.detached());
}
TEST(VmoBufferTest, MoveConstructorTest) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
{
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kGoldenVmoid, buffer.vmoid());
VmoBuffer move_constructed(std::move(buffer));
EXPECT_EQ(kCapacity, move_constructed.capacity());
EXPECT_EQ(kGoldenVmoid, move_constructed.vmoid());
- EXPECT_FALSE(manager.detached());
+ EXPECT_FALSE(registry.detached());
}
- EXPECT_TRUE(manager.detached());
+ EXPECT_TRUE(registry.detached());
}
TEST(VmoBufferTest, MoveAssignmentTest) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
{
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kGoldenVmoid, buffer.vmoid());
auto buffer2 = std::move(buffer);
EXPECT_EQ(kCapacity, buffer2.capacity());
EXPECT_EQ(kGoldenVmoid, buffer2.vmoid());
- EXPECT_FALSE(manager.detached());
+ EXPECT_FALSE(registry.detached());
}
- EXPECT_TRUE(manager.detached());
+ EXPECT_TRUE(registry.detached());
}
TEST(VmoBufferTest, MoveToSelfTest) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
{
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kGoldenVmoid, buffer.vmoid());
@@ -128,16 +116,16 @@
*addr = std::move(buffer);
EXPECT_EQ(kCapacity, buffer.capacity());
EXPECT_EQ(kGoldenVmoid, buffer.vmoid());
- EXPECT_FALSE(manager.detached());
+ EXPECT_FALSE(registry.detached());
}
- EXPECT_TRUE(manager.detached());
+ EXPECT_TRUE(registry.detached());
}
TEST(VmoBufferTest, MappingTest) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
char buf[kBlobfsBlockSize];
memset(buf, 'a', sizeof(buf));
@@ -150,9 +138,9 @@
}
TEST(VmoBufferTest, CompareVmoToMapping) {
- MockSpaceManager manager;
+ MockVmoidRegistry registry;
VmoBuffer buffer;
- ASSERT_OK(buffer.Initialize(&manager, kCapacity, kGoldenLabel));
+ ASSERT_OK(buffer.Initialize(®istry, kCapacity, kGoldenLabel));
// Fill |buffer| with some arbitrary data via mapping.
char buf[kBlobfsBlockSize * 3];
diff --git a/zircon/system/ulib/blobfs/vmo-buffer.cpp b/zircon/system/ulib/blobfs/vmo-buffer.cpp
index f7637ff..5779cf5 100644
--- a/zircon/system/ulib/blobfs/vmo-buffer.cpp
+++ b/zircon/system/ulib/blobfs/vmo-buffer.cpp
@@ -6,13 +6,15 @@
#include <utility>
+#include <blobfs/format.h>
+#include <fs/trace.h>
#include <zircon/status.h>
#include <zircon/assert.h>
namespace blobfs {
VmoBuffer::VmoBuffer(VmoBuffer&& other)
- : space_manager_(std::move(other.space_manager_)),
+ : vmoid_registry_(std::move(other.vmoid_registry_)),
mapper_(std::move(other.mapper_)),
vmoid_(other.vmoid_),
capacity_(other.capacity_) {
@@ -21,7 +23,7 @@
VmoBuffer& VmoBuffer::operator=(VmoBuffer&& other) {
if (&other != this) {
- space_manager_ = other.space_manager_;
+ vmoid_registry_ = other.vmoid_registry_;
mapper_ = std::move(other.mapper_);
vmoid_ = other.vmoid_;
capacity_ = other.capacity_;
@@ -33,17 +35,17 @@
VmoBuffer::~VmoBuffer() {
if (vmoid_ != VMOID_INVALID) {
- space_manager_->DetachVmo(vmoid_);
+ vmoid_registry_->DetachVmo(vmoid_);
}
}
void VmoBuffer::Reset() {
- space_manager_ = nullptr;
+ vmoid_registry_ = nullptr;
vmoid_ = VMOID_INVALID;
capacity_ = 0;
}
-zx_status_t VmoBuffer::Initialize(SpaceManager* space_manager, size_t blocks, const char* label) {
+zx_status_t VmoBuffer::Initialize(VmoidRegistry* vmoid_registry, size_t blocks, const char* label) {
ZX_DEBUG_ASSERT(vmoid_ == VMOID_INVALID);
fzl::OwnedVmoMapper mapper;
zx_status_t status = mapper.CreateAndMap(blocks * kBlobfsBlockSize, label);
@@ -54,14 +56,14 @@
}
vmoid_t vmoid;
- status = space_manager->AttachVmo(mapper.vmo(), &vmoid);
+ status = vmoid_registry->AttachVmo(mapper.vmo(), &vmoid);
if (status != ZX_OK) {
FS_TRACE_ERROR("VmoBuffer: Failed to attach vmo %s: %s\n", label,
zx_status_get_string(status));
return status;
}
- space_manager_ = space_manager;
+ vmoid_registry_ = vmoid_registry;
mapper_ = std::move(mapper);
vmoid_ = vmoid;
capacity_ = mapper_.size() / kBlobfsBlockSize;