summaryrefslogtreecommitdiff
path: root/services/incremental/IncrementalService.cpp
diff options
context:
space:
mode:
authorYurii Zubrytskyi <zyy@google.com>2020-12-08 07:35:24 -0800
committerYurii Zubrytskyi <zyy@google.com>2021-01-14 22:01:47 -0800
commit5f69292dcff3a7da1e3a495e60a738d63c682b36 (patch)
tree9ae3981a72bfece68013f458046ec1a5a751a3af /services/incremental/IncrementalService.cpp
parent5ffd2a0d6e405e317454d3e545a2d298463b0ce7 (diff)
Incfs: Add the new .blocks_written control file
Bug: 170231230 Test: incremental and PackageManager unit tests Change-Id: Ia26306a4b1ca70ce70d55ce807fea62540f89334
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r--services/incremental/IncrementalService.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index dde70caa797f..c9c5489a50df 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -503,7 +503,9 @@ StorageId IncrementalService::createStorage(
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 @@ bool IncrementalService::mountExistingImage(std::string_view root) {
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 @@ void IncrementalService::prepareDataLoaderLocked(IncFsMount& ifs, DataLoaderPara
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 =