aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payload_consumer/delta_performer.cc2
-rw-r--r--payload_consumer/payload_constants.cc3
-rw-r--r--payload_consumer/payload_constants.h3
-rw-r--r--payload_generator/payload_generation_config.cc9
-rw-r--r--scripts/update_payload/applier.py1
-rw-r--r--scripts/update_payload/checker.py7
-rwxr-xr-xscripts/update_payload/checker_unittest.py9
-rw-r--r--scripts/update_payload/common.py3
-rw-r--r--update_engine.conf2
-rw-r--r--update_metadata.proto4
10 files changed, 29 insertions, 14 deletions
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index c2c43db2..a619d1d9 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -65,7 +65,7 @@ using std::vector;
namespace chromeos_update_engine {
const uint64_t DeltaPerformer::kSupportedMajorPayloadVersion = 2;
-const uint32_t DeltaPerformer::kSupportedMinorPayloadVersion = 4;
+const uint32_t DeltaPerformer::kSupportedMinorPayloadVersion = 5;
const unsigned DeltaPerformer::kProgressLogMaxChunks = 10;
const unsigned DeltaPerformer::kProgressLogTimeoutSeconds = 30;
diff --git a/payload_consumer/payload_constants.cc b/payload_consumer/payload_constants.cc
index 9338d29d..e679316a 100644
--- a/payload_consumer/payload_constants.cc
+++ b/payload_consumer/payload_constants.cc
@@ -25,7 +25,8 @@ const uint32_t kFullPayloadMinorVersion = 0;
const uint32_t kInPlaceMinorPayloadVersion = 1;
const uint32_t kSourceMinorPayloadVersion = 2;
const uint32_t kOpSrcHashMinorPayloadVersion = 3;
-const uint32_t kPuffdiffMinorPayloadVersion = 4;
+const uint32_t kBrotliBsdiffMinorPayloadVersion = 4;
+const uint32_t kPuffdiffMinorPayloadVersion = 5;
const uint64_t kMaxPayloadHeaderSize = 24;
diff --git a/payload_consumer/payload_constants.h b/payload_consumer/payload_constants.h
index b3bd5e7c..ac3e8824 100644
--- a/payload_consumer/payload_constants.h
+++ b/payload_consumer/payload_constants.h
@@ -43,6 +43,9 @@ extern const uint32_t kSourceMinorPayloadVersion;
// The minor version that allows per-operation source hash.
extern const uint32_t kOpSrcHashMinorPayloadVersion;
+// The minor version that allows BROTLI_BSDIFF, ZERO and DISCARD operation.
+extern const uint32_t kBrotliBsdiffMinorPayloadVersion;
+
// The minor version that allows PUFFDIFF operation.
extern const uint32_t kPuffdiffMinorPayloadVersion;
diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc
index 2c5d6d68..15d4ab5b 100644
--- a/payload_generator/payload_generation_config.cc
+++ b/payload_generator/payload_generation_config.cc
@@ -128,6 +128,7 @@ bool PayloadVersion::Validate() const {
minor == kInPlaceMinorPayloadVersion ||
minor == kSourceMinorPayloadVersion ||
minor == kOpSrcHashMinorPayloadVersion ||
+ minor == kBrotliBsdiffMinorPayloadVersion ||
minor == kPuffdiffMinorPayloadVersion);
return true;
}
@@ -151,7 +152,7 @@ bool PayloadVersion::OperationAllowed(InstallOperation_Type operation) const {
// The implementation of these operations had a bug in earlier versions
// that prevents them from being used in any payload. We will enable
// them for delta payloads for now.
- return minor >= kPuffdiffMinorPayloadVersion;
+ return minor >= kBrotliBsdiffMinorPayloadVersion;
// Delta operations:
case InstallOperation::MOVE:
@@ -166,10 +167,10 @@ bool PayloadVersion::OperationAllowed(InstallOperation_Type operation) const {
return minor >= kSourceMinorPayloadVersion;
case InstallOperation::BROTLI_BSDIFF:
- return minor >= kPuffdiffMinorPayloadVersion;
- // TODO(*) Revert the disablement of puffdiff after we fix b/72815313.
+ return minor >= kBrotliBsdiffMinorPayloadVersion;
+
case InstallOperation::PUFFDIFF:
- return false;
+ return minor >= kPuffdiffMinorPayloadVersion;
}
return false;
}
diff --git a/scripts/update_payload/applier.py b/scripts/update_payload/applier.py
index e470ac4e..6db76647 100644
--- a/scripts/update_payload/applier.py
+++ b/scripts/update_payload/applier.py
@@ -557,6 +557,7 @@ class PayloadApplier(object):
shutil.copyfile(old_part_file_name, new_part_file_name)
elif (self.minor_version == common.SOURCE_MINOR_PAYLOAD_VERSION or
self.minor_version == common.OPSRCHASH_MINOR_PAYLOAD_VERSION or
+ self.minor_version == common.BROTLI_BSDIFF_MINOR_PAYLOAD_VERSION or
self.minor_version == common.PUFFDIFF_MINOR_PAYLOAD_VERSION):
# In minor version >= 2, we don't want to copy the partitions, so
# instead just make the new partition file.
diff --git a/scripts/update_payload/checker.py b/scripts/update_payload/checker.py
index e4cb845f..21d99a0e 100644
--- a/scripts/update_payload/checker.py
+++ b/scripts/update_payload/checker.py
@@ -57,6 +57,7 @@ _SUPPORTED_MINOR_VERSIONS = {
2: (_TYPE_DELTA,),
3: (_TYPE_DELTA,),
4: (_TYPE_DELTA,),
+ 5: (_TYPE_DELTA,),
}
_OLD_DELTA_USABLE_PART_SIZE = 2 * 1024 * 1024 * 1024
@@ -1010,8 +1011,10 @@ class PayloadChecker(object):
elif op.type == common.OpType.SOURCE_BSDIFF and self.minor_version >= 2:
self._CheckAnyDiffOperation(op, data_length, total_dst_blocks, op_name)
self._CheckAnySourceOperation(op, total_src_blocks, op_name)
- elif (op.type in (common.OpType.PUFFDIFF, common.OpType.BROTLI_BSDIFF) and
- self.minor_version >= 4):
+ elif op.type == common.OpType.BROTLI_BSDIFF and self.minor_version >= 4:
+ self._CheckAnyDiffOperation(op, data_length, total_dst_blocks, op_name)
+ self._CheckAnySourceOperation(op, total_src_blocks, op_name)
+ elif op.type == common.OpType.PUFFDIFF and self.minor_version >= 5:
self._CheckAnyDiffOperation(op, data_length, total_dst_blocks, op_name)
self._CheckAnySourceOperation(op, total_src_blocks, op_name)
else:
diff --git a/scripts/update_payload/checker_unittest.py b/scripts/update_payload/checker_unittest.py
index 974519d5..a21c2bae 100755
--- a/scripts/update_payload/checker_unittest.py
+++ b/scripts/update_payload/checker_unittest.py
@@ -849,8 +849,10 @@ class PayloadCheckerTest(mox.MoxTestBase):
elif op_type in (common.OpType.SOURCE_COPY, common.OpType.SOURCE_BSDIFF):
payload_checker.minor_version = 1 if fail_bad_minor_version else 2
elif op_type in (common.OpType.ZERO, common.OpType.DISCARD,
- common.OpType.PUFFDIFF, common.OpType.BROTLI_BSDIFF):
+ common.OpType.BROTLI_BSDIFF):
payload_checker.minor_version = 3 if fail_bad_minor_version else 4
+ elif op_type == common.OpType.PUFFDIFF:
+ payload_checker.minor_version = 4 if fail_bad_minor_version else 5
if op_type not in (common.OpType.MOVE, common.OpType.SOURCE_COPY):
if not fail_mismatched_data_offset_length:
@@ -1065,7 +1067,8 @@ class PayloadCheckerTest(mox.MoxTestBase):
(minor_version == 1 and payload_type == checker._TYPE_DELTA) or
(minor_version == 2 and payload_type == checker._TYPE_DELTA) or
(minor_version == 3 and payload_type == checker._TYPE_DELTA) or
- (minor_version == 4 and payload_type == checker._TYPE_DELTA))
+ (minor_version == 4 and payload_type == checker._TYPE_DELTA) or
+ (minor_version == 5 and payload_type == checker._TYPE_DELTA))
args = (report,)
if should_succeed:
@@ -1289,7 +1292,7 @@ def AddAllParametricTests():
# Add all _CheckManifestMinorVersion() test cases.
AddParametricTests('CheckManifestMinorVersion',
- {'minor_version': (None, 0, 1, 2, 3, 4, 555),
+ {'minor_version': (None, 0, 1, 2, 3, 4, 5, 555),
'payload_type': (checker._TYPE_FULL,
checker._TYPE_DELTA)})
diff --git a/scripts/update_payload/common.py b/scripts/update_payload/common.py
index 231c5041..ac05ccdc 100644
--- a/scripts/update_payload/common.py
+++ b/scripts/update_payload/common.py
@@ -27,7 +27,8 @@ BRILLO_MAJOR_PAYLOAD_VERSION = 2
INPLACE_MINOR_PAYLOAD_VERSION = 1
SOURCE_MINOR_PAYLOAD_VERSION = 2
OPSRCHASH_MINOR_PAYLOAD_VERSION = 3
-PUFFDIFF_MINOR_PAYLOAD_VERSION = 4
+BROTLI_BSDIFF_MINOR_PAYLOAD_VERSION = 4
+PUFFDIFF_MINOR_PAYLOAD_VERSION = 5
#
# Payload operation types.
diff --git a/update_engine.conf b/update_engine.conf
index e3f246fb..33584114 100644
--- a/update_engine.conf
+++ b/update_engine.conf
@@ -1,2 +1,2 @@
PAYLOAD_MAJOR_VERSION=2
-PAYLOAD_MINOR_VERSION=4
+PAYLOAD_MINOR_VERSION=5
diff --git a/update_metadata.proto b/update_metadata.proto
index b5d6c59b..99b74229 100644
--- a/update_metadata.proto
+++ b/update_metadata.proto
@@ -169,8 +169,10 @@ message InstallOperation {
// On minor version 4 or newer, these operations are supported:
ZERO = 6; // Write zeros in the destination.
DISCARD = 7; // Discard the destination blocks, reading as undefined.
- PUFFDIFF = 9; // The data is in puffdiff format.
BROTLI_BSDIFF = 10; // Like SOURCE_BSDIFF, but compressed with brotli.
+
+ // On minor version 5 or newer, these operations are supported:
+ PUFFDIFF = 9; // The data is in puffdiff format.
}
required Type type = 1;
// The offset into the delta file (after the protobuf)