Incfs: Add the new .blocks_written control file

Bug: 170231230
Test: incremental and PackageManager unit tests
Change-Id: Ia26306a4b1ca70ce70d55ce807fea62540f89334
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index dde70ca..c9c5489 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -503,7 +503,9 @@
         int cmd = controlParcel.cmd.release().release();
         int pendingReads = controlParcel.pendingReads.release().release();
         int logs = controlParcel.log.release().release();
-        control = mIncFs->createControl(cmd, pendingReads, logs);
+        int blocksWritten =
+                controlParcel.blocksWritten ? controlParcel.blocksWritten->release().release() : -1;
+        control = mIncFs->createControl(cmd, pendingReads, logs, blocksWritten);
     }
 
     std::unique_lock l(mLock);
@@ -1381,7 +1383,9 @@
     int cmd = controlParcel.cmd.release().release();
     int pendingReads = controlParcel.pendingReads.release().release();
     int logs = controlParcel.log.release().release();
-    IncFsMount::Control control = mIncFs->createControl(cmd, pendingReads, logs);
+    int blocksWritten =
+            controlParcel.blocksWritten ? controlParcel.blocksWritten->release().release() : -1;
+    IncFsMount::Control control = mIncFs->createControl(cmd, pendingReads, logs, blocksWritten);
 
     auto ifs = std::make_shared<IncFsMount>(std::string(root), -1, std::move(control), *this);
 
@@ -1516,6 +1520,9 @@
     fsControlParcel.incremental->cmd.reset(dup(ifs.control.cmd()));
     fsControlParcel.incremental->pendingReads.reset(dup(ifs.control.pendingReads()));
     fsControlParcel.incremental->log.reset(dup(ifs.control.logs()));
+    if (ifs.control.blocksWritten() >= 0) {
+        fsControlParcel.incremental->blocksWritten.emplace(dup(ifs.control.blocksWritten()));
+    }
     fsControlParcel.service = new IncrementalServiceConnector(*this, ifs.mountId);
 
     ifs.dataLoaderStub =