Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f96053b authored by David Anderson's avatar David Anderson
Browse files

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
parent 5658f346
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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) {
+2 −2
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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();