summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkilesh Kailash <akailash@google.com>2022-06-23 20:00:11 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-06-23 20:00:11 +0000
commit55ff728d84a7d62afd91558cd46f2861eb66d1e5 (patch)
tree45a799444f8ebcf7fbfcfb8e3f76c0588eb06bdb
parent8b6990afb2c4d7200d15d44447269292e5373a94 (diff)
parentae04e7ede1d6e5dd914e3be099b85b586cefa905 (diff)
downloadcore-55ff728d84a7d62afd91558cd46f2861eb66d1e5.tar.gz
libsnapshot: Fix vts_libsnapshot_test for GRF with Vendor on S am: ae04e7ede1
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/18917076 Change-Id: I579b6c94d768dcca81a39f81866e02fed3e710f5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--fs_mgr/libsnapshot/snapshot.cpp17
-rw-r--r--fs_mgr/libsnapshot/snapshot_test.cpp23
2 files changed, 33 insertions, 7 deletions
diff --git a/fs_mgr/libsnapshot/snapshot.cpp b/fs_mgr/libsnapshot/snapshot.cpp
index a83f535b2..019b64a44 100644
--- a/fs_mgr/libsnapshot/snapshot.cpp
+++ b/fs_mgr/libsnapshot/snapshot.cpp
@@ -3273,8 +3273,21 @@ Return SnapshotManager::CreateUpdateSnapshots(const DeltaArchiveManifest& manife
snapuserd_client_ = nullptr;
}
} else {
- status.set_userspace_snapshots(!IsDmSnapshotTestingEnabled());
- if (IsDmSnapshotTestingEnabled()) {
+ bool userSnapshotsEnabled = true;
+ const std::string UNKNOWN = "unknown";
+ const std::string vendor_release = android::base::GetProperty(
+ "ro.vendor.build.version.release_or_codename", UNKNOWN);
+
+ // No user-space snapshots if vendor partition is on Android 12
+ if (vendor_release.find("12") != std::string::npos) {
+ LOG(INFO) << "Userspace snapshots disabled as vendor partition is on Android: "
+ << vendor_release;
+ userSnapshotsEnabled = false;
+ }
+
+ userSnapshotsEnabled = (userSnapshotsEnabled && !IsDmSnapshotTestingEnabled());
+ status.set_userspace_snapshots(userSnapshotsEnabled);
+ if (!userSnapshotsEnabled) {
is_snapshot_userspace_ = false;
LOG(INFO) << "User-space snapshots disabled for testing";
} else {
diff --git a/fs_mgr/libsnapshot/snapshot_test.cpp b/fs_mgr/libsnapshot/snapshot_test.cpp
index 36abf712b..6a348b4e5 100644
--- a/fs_mgr/libsnapshot/snapshot_test.cpp
+++ b/fs_mgr/libsnapshot/snapshot_test.cpp
@@ -91,7 +91,7 @@ std::string fake_super;
void MountMetadata();
bool ShouldUseCompression();
-bool ShouldUseUserspaceSnapshots();
+bool IsDaemonRequired();
class SnapshotTest : public ::testing::Test {
public:
@@ -1208,7 +1208,7 @@ TEST_F(SnapshotUpdateTest, FullUpdateFlow) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
- ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
+ ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// We should have started in SECOND_PHASE since nothing shrinks.
ASSERT_TRUE(AcquireLock());
@@ -1342,7 +1342,7 @@ TEST_F(SnapshotUpdateTest, SpaceSwapUpdate) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
- ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
+ ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// Check that the merge phase is FIRST_PHASE until at least one call
// to ProcessUpdateState() occurs.
@@ -1450,7 +1450,7 @@ TEST_F(SnapshotUpdateTest, ConsistencyCheckResume) {
// Initiate the merge and wait for it to be completed.
ASSERT_TRUE(init->InitiateMerge());
- ASSERT_EQ(init->IsSnapuserdRequired(), ShouldUseUserspaceSnapshots());
+ ASSERT_EQ(init->IsSnapuserdRequired(), IsDaemonRequired());
{
// Check that the merge phase is FIRST_PHASE until at least one call
// to ProcessUpdateState() occurs.
@@ -2750,13 +2750,26 @@ void SnapshotTestEnvironment::TearDown() {
}
}
-bool ShouldUseUserspaceSnapshots() {
+bool IsDaemonRequired() {
if (FLAGS_force_config == "dmsnap") {
return false;
}
+
+ const std::string UNKNOWN = "unknown";
+ const std::string vendor_release =
+ android::base::GetProperty("ro.vendor.build.version.release_or_codename", UNKNOWN);
+
+ // No userspace snapshots if vendor partition is on Android 12
+ // However, for GRF devices, snapuserd daemon will be on
+ // vendor ramdisk in Android 12.
+ if (vendor_release.find("12") != std::string::npos) {
+ return true;
+ }
+
if (!FLAGS_force_config.empty()) {
return true;
}
+
return IsUserspaceSnapshotsEnabled();
}