DO NOT MERGE: libsnapshot: Fix test failures on certain configurations.
Due to how CF is built and tested, VABC is enabled even when not supported by the kernel. To work around this add some logic in libsnapshot and the test harness to recognize this situation and silently flip off the VABC flag. This also fixes the -force_mode option to vts_libsnapshot_test, so that it will skip tests that aren't supported by the device. Bug: 264279496 Test: vts_libsnapshot_test on android13-gsi with 11-5.4 kernel Change-Id: I9279d8d400cac5cd504a7ae91f254aae57fa856d
This commit is contained in:
parent
5658f34653
commit
3f96053b38
4 changed files with 12 additions and 3 deletions
|
@ -3166,7 +3166,8 @@ Return SnapshotManager::CreateUpdateSnapshots(const DeltaArchiveManifest& manife
|
|||
<< " writer.GetCowVersion(): " << writer.GetCowVersion();
|
||||
|
||||
bool use_compression = IsCompressionEnabled() && dap_metadata.vabc_enabled() &&
|
||||
!device_->IsRecovery() && cow_format_support;
|
||||
!device_->IsRecovery() && cow_format_support &&
|
||||
KernelSupportsCompressedSnapshots();
|
||||
|
||||
std::string compression_algorithm;
|
||||
if (use_compression) {
|
||||
|
|
|
@ -2760,7 +2760,7 @@ bool IsDaemonRequired() {
|
|||
return true;
|
||||
}
|
||||
|
||||
return IsUserspaceSnapshotsEnabled();
|
||||
return IsUserspaceSnapshotsEnabled() && KernelSupportsCompressedSnapshots();
|
||||
}
|
||||
|
||||
bool ShouldUseCompression() {
|
||||
|
@ -2770,7 +2770,7 @@ bool ShouldUseCompression() {
|
|||
if (FLAGS_force_config == "vabc") {
|
||||
return true;
|
||||
}
|
||||
return IsCompressionEnabled();
|
||||
return IsCompressionEnabled() && KernelSupportsCompressedSnapshots();
|
||||
}
|
||||
|
||||
} // namespace snapshot
|
||||
|
|
|
@ -26,7 +26,9 @@
|
|||
#include <android-base/properties.h>
|
||||
#include <android-base/strings.h>
|
||||
#include <fs_mgr/roots.h>
|
||||
#include <libdm/dm.h>
|
||||
|
||||
using android::dm::DeviceMapper;
|
||||
using android::dm::kSectorSize;
|
||||
using android::fiemap::FiemapStatus;
|
||||
using android::fs_mgr::EnsurePathMounted;
|
||||
|
@ -208,5 +210,10 @@ bool IsDmSnapshotTestingEnabled() {
|
|||
return android::base::GetBoolProperty("snapuserd.test.dm.snapshots", false);
|
||||
}
|
||||
|
||||
bool KernelSupportsCompressedSnapshots() {
|
||||
auto& dm = DeviceMapper::Instance();
|
||||
return dm.GetTargetByName("user", nullptr);
|
||||
}
|
||||
|
||||
} // namespace snapshot
|
||||
} // namespace android
|
||||
|
|
|
@ -129,6 +129,7 @@ std::ostream& operator<<(std::ostream& os, const Now&);
|
|||
void AppendExtent(google::protobuf::RepeatedPtrField<chromeos_update_engine::Extent>* extents,
|
||||
uint64_t start_block, uint64_t num_blocks);
|
||||
|
||||
bool KernelSupportsCompressedSnapshots();
|
||||
bool IsCompressionEnabled();
|
||||
|
||||
bool IsUserspaceSnapshotsEnabled();
|
||||
|
|
Loading…
Reference in a new issue