[blobfs] Clean up operation dependencies

Change-Id: Ia23aa9eba56f79906b1daac8730be36163655871
diff --git a/zircon/system/ulib/blobfs/BUILD.gn b/zircon/system/ulib/blobfs/BUILD.gn
index 56dc966..2d566e1 100644
--- a/zircon/system/ulib/blobfs/BUILD.gn
+++ b/zircon/system/ulib/blobfs/BUILD.gn
@@ -60,8 +60,9 @@
       "journal-entry.cpp",
       "journal.cpp",
       "metrics.cpp",
-      "unbuffered-operations-builder.cpp",
+      "operation.cpp",
       "ring-buffer.cpp",
+      "unbuffered-operations-builder.cpp",
       "vmo-buffer.cpp",
       "write-txn.cpp",
       "writeback-queue.cpp",
diff --git a/zircon/system/ulib/blobfs/include/blobfs/operation.h b/zircon/system/ulib/blobfs/include/blobfs/operation.h
index 0c5a156..9f21e79 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/operation.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/operation.h
@@ -8,6 +8,7 @@
 #error Fuchsia-only Header
 #endif
 
+#include <fbl/vector.h>
 #include <lib/zx/vmo.h>
 #include <zircon/device/block.h>
 
@@ -48,4 +49,7 @@
     Operation op;
 };
 
+// Sums the |length| of all requests.
+uint64_t BlockCount(const fbl::Vector<UnbufferedOperation>& requests);
+
 } // namespace blobfs
diff --git a/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h b/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
index e5aebae..f6f50e7 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/ring-buffer.h
@@ -10,12 +10,11 @@
 
 #include <utility>
 
+#include <blobfs/operation.h>
 #include <blobfs/vmo-buffer.h>
 #include <fbl/mutex.h>
 #include <lib/fzl/owned-vmo-mapper.h>
 
-#include "unbuffered-operations-builder.h"
-
 namespace blobfs {
 
 class RingBufferReservation;
diff --git a/zircon/system/ulib/blobfs/include/blobfs/unbuffered-operations-builder.h b/zircon/system/ulib/blobfs/include/blobfs/unbuffered-operations-builder.h
index 6074ab2..3a38a40 100644
--- a/zircon/system/ulib/blobfs/include/blobfs/unbuffered-operations-builder.h
+++ b/zircon/system/ulib/blobfs/include/blobfs/unbuffered-operations-builder.h
@@ -49,7 +49,4 @@
     uint64_t block_count_;
 };
 
-// Sums the |length| of all requests.
-uint64_t BlockCount(const fbl::Vector<UnbufferedOperation>& requests);
-
 } // namespace blobfs
diff --git a/zircon/system/ulib/blobfs/operation.cpp b/zircon/system/ulib/blobfs/operation.cpp
new file mode 100644
index 0000000..7a0df1d
--- /dev/null
+++ b/zircon/system/ulib/blobfs/operation.cpp
@@ -0,0 +1,17 @@
+// 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.
+
+#include <blobfs/operation.h>
+
+namespace blobfs {
+
+uint64_t BlockCount(const fbl::Vector<UnbufferedOperation>& operations) {
+    uint64_t total_length = 0;
+    for (const auto& operation: operations) {
+        total_length += operation.op.length;
+    }
+    return total_length;
+}
+
+} // namespace blobfs
diff --git a/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp b/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
index fee99f89..7b3e130 100644
--- a/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
+++ b/zircon/system/ulib/blobfs/test/ring-buffer-test.cpp
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <blobfs/ring-buffer.h>
+#include <blobfs/unbuffered-operations-builder.h>
 
 #include <lib/zx/vmo.h>
 #include <zircon/assert.h>
diff --git a/zircon/system/ulib/blobfs/unbuffered-operations-builder.cpp b/zircon/system/ulib/blobfs/unbuffered-operations-builder.cpp
index d7f25ac..9f3c6ab 100644
--- a/zircon/system/ulib/blobfs/unbuffered-operations-builder.cpp
+++ b/zircon/system/ulib/blobfs/unbuffered-operations-builder.cpp
@@ -92,12 +92,4 @@
     return std::move(operations_);
 }
 
-uint64_t BlockCount(const fbl::Vector<UnbufferedOperation>& operations) {
-    uint64_t total_length = 0;
-    for (const auto& operation: operations) {
-        total_length += operation.op.length;
-    }
-    return total_length;
-}
-
 } // namespace blobfs