diff --git a/fs_mgr/libsnapshot/device_info.cpp b/fs_mgr/libsnapshot/device_info.cpp
index 5c1b291..a6d96ed 100644
--- a/fs_mgr/libsnapshot/device_info.cpp
+++ b/fs_mgr/libsnapshot/device_info.cpp
@@ -19,8 +19,6 @@
 #include <fs_mgr_overlayfs.h>
 #include <libfiemap/image_manager.h>
 
-#include "utility.h"
-
 namespace android {
 namespace snapshot {
 
@@ -145,9 +143,5 @@
     return android::dm::DeviceMapper::Instance();
 }
 
-bool DeviceInfo::UseUserspaceSnapshots() const {
-    return IsUserspaceSnapshotsEnabled();
-}
-
 }  // namespace snapshot
 }  // namespace android
diff --git a/fs_mgr/libsnapshot/device_info.h b/fs_mgr/libsnapshot/device_info.h
index a07f554..8aefb85 100644
--- a/fs_mgr/libsnapshot/device_info.h
+++ b/fs_mgr/libsnapshot/device_info.h
@@ -41,7 +41,6 @@
     std::unique_ptr<IImageManager> OpenImageManager() const override;
     bool IsFirstStageInit() const override;
     android::dm::IDeviceMapper& GetDeviceMapper() override;
-    bool UseUserspaceSnapshots() const override;
 
     void set_first_stage_init(bool value) { first_stage_init_ = value; }
 
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/mock_device_info.h b/fs_mgr/libsnapshot/include/libsnapshot/mock_device_info.h
index 8c4161c..573a85b 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/mock_device_info.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/mock_device_info.h
@@ -34,7 +34,6 @@
     MOCK_METHOD(bool, IsFirstStageInit, (), (const, override));
     MOCK_METHOD(std::unique_ptr<android::fiemap::IImageManager>, OpenImageManager, (),
                 (const, override));
-    MOCK_METHOD(bool, UseUserspaceSnapshots, (), (const, override));
 };
 
 }  // namespace android::snapshot
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/snapshot.h b/fs_mgr/libsnapshot/include/libsnapshot/snapshot.h
index f7e37bb..41c6ef5 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/snapshot.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/snapshot.h
@@ -111,7 +111,6 @@
         virtual bool IsFirstStageInit() const = 0;
         virtual std::unique_ptr<IImageManager> OpenImageManager() const = 0;
         virtual android::dm::IDeviceMapper& GetDeviceMapper() = 0;
-        virtual bool UseUserspaceSnapshots() const = 0;
 
         // Helper method for implementing OpenImageManager.
         std::unique_ptr<IImageManager> OpenImageManager(const std::string& gsid_dir) const;
diff --git a/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h b/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
index 07c3ec5..c3b40dc 100644
--- a/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
+++ b/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
@@ -107,7 +107,6 @@
     }
 
     bool IsSlotUnbootable(uint32_t slot) { return unbootable_slots_.count(slot) != 0; }
-    bool UseUserspaceSnapshots() const override;
 
     void set_slot_suffix(const std::string& suffix) { slot_suffix_ = suffix; }
     void set_fake_super(const std::string& path) {
diff --git a/fs_mgr/libsnapshot/snapshot.cpp b/fs_mgr/libsnapshot/snapshot.cpp
index c7c5da1..dfa467e 100644
--- a/fs_mgr/libsnapshot/snapshot.cpp
+++ b/fs_mgr/libsnapshot/snapshot.cpp
@@ -3134,15 +3134,14 @@
             .compression_algorithm = compression_algorithm,
     };
 
-    cow_creator.userspace_snapshots_enabled = device_->UseUserspaceSnapshots();
-    if (cow_creator.userspace_snapshots_enabled) {
-        LOG(INFO) << "User-space snapshots enabled, compression = " << compression_algorithm;
-    } else {
-        LOG(INFO) << "User-space snapshots disabled, compression = " << compression_algorithm;
-    }
-    is_snapshot_userspace_ = cow_creator.userspace_snapshots_enabled;
+    if (!device()->IsTestDevice()) {
+        cow_creator.userspace_snapshots_enabled = IsUserspaceSnapshotsEnabled();
+        if (cow_creator.userspace_snapshots_enabled) {
+            LOG(INFO) << "User-space snapshots enabled";
+        } else {
+            LOG(INFO) << "User-space snapshots disabled";
+        }
 
-    if ((use_compression || is_snapshot_userspace_) && !device()->IsTestDevice()) {
         // Terminate stale daemon if any
         std::unique_ptr<SnapuserdClient> snapuserd_client =
                 SnapuserdClient::Connect(kSnapuserdSocket, 10s);
@@ -3157,8 +3156,17 @@
             snapuserd_client_->CloseConnection();
             snapuserd_client_ = nullptr;
         }
+    } else {
+        cow_creator.userspace_snapshots_enabled = !IsDmSnapshotTestingEnabled();
+        if (cow_creator.userspace_snapshots_enabled) {
+            LOG(INFO) << "User-space snapshots disabled for testing";
+        } else {
+            LOG(INFO) << "User-space snapshots enabled for testing";
+        }
     }
 
+    is_snapshot_userspace_ = cow_creator.userspace_snapshots_enabled;
+
     // If compression is enabled, we need to retain a copy of the old metadata
     // so we can access original blocks in case they are moved around. We do
     // not want to rely on the old super metadata slot because we don't
diff --git a/fs_mgr/libsnapshot/snapshot_fuzz_utils.h b/fs_mgr/libsnapshot/snapshot_fuzz_utils.h
index 63159dc..c1a5af7 100644
--- a/fs_mgr/libsnapshot/snapshot_fuzz_utils.h
+++ b/fs_mgr/libsnapshot/snapshot_fuzz_utils.h
@@ -130,7 +130,6 @@
     std::unique_ptr<IImageManager> OpenImageManager() const {
         return env_->CheckCreateFakeImageManager();
     }
-    bool UseUserspaceSnapshots() const override { return false; }
 
     void SwitchSlot() { switched_slot_ = !switched_slot_; }
 
diff --git a/fs_mgr/libsnapshot/test_helpers.cpp b/fs_mgr/libsnapshot/test_helpers.cpp
index 2cd13e0..e3e3af8 100644
--- a/fs_mgr/libsnapshot/test_helpers.cpp
+++ b/fs_mgr/libsnapshot/test_helpers.cpp
@@ -25,8 +25,6 @@
 #include <openssl/sha.h>
 #include <payload_consumer/file_descriptor.h>
 
-#include "utility.h"
-
 namespace android {
 namespace snapshot {
 
@@ -322,9 +320,5 @@
     return android::base::GetBoolProperty("ro.virtual_ab.enabled", false);
 }
 
-bool TestDeviceInfo::UseUserspaceSnapshots() const {
-    return !IsDmSnapshotTestingEnabled();
-}
-
 }  // namespace snapshot
 }  // namespace android
