diff --git a/Android.bp b/Android.bp
index b502632..d8b89b5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -206,6 +206,7 @@
         "libbootloader_message",
         "libhidlbase",
         "liblp",
+        "libstatslog",
         "libutils",
         "android.hardware.boot@1.0",
         "android.hardware.boot@1.1",
@@ -224,6 +225,7 @@
                 "libsnapshot",
             ],
             exclude_shared_libs: [
+                "libstatslog",
                 "libutilscallstack",
             ],
         },
diff --git a/cleanup_previous_update_action.cc b/cleanup_previous_update_action.cc
index 169f6bd..f6838f9 100644
--- a/cleanup_previous_update_action.cc
+++ b/cleanup_previous_update_action.cc
@@ -15,16 +15,22 @@
 //
 #include "update_engine/cleanup_previous_update_action.h"
 
+#include <chrono>  // NOLINT(build/c++11) -- for merge times
 #include <functional>
 #include <string>
 
 #include <android-base/properties.h>
 #include <base/bind.h>
 
+#ifndef __ANDROID_RECOVERY__
+#include <statslog.h>
+#endif
+
 #include "update_engine/common/utils.h"
 #include "update_engine/payload_consumer/delta_performer.h"
 
 using android::snapshot::SnapshotManager;
+using android::snapshot::SnapshotMergeStats;
 using android::snapshot::UpdateState;
 using brillo::MessageLoop;
 
@@ -50,7 +56,8 @@
       delegate_(delegate),
       running_(false),
       cancel_failed_(false),
-      last_percentage_(0) {}
+      last_percentage_(0),
+      merge_stats_(SnapshotMergeStats::GetInstance(*snapshot)) {}
 
 void CleanupPreviousUpdateAction::PerformAction() {
   ResumeAction();
@@ -76,6 +83,7 @@
 
 void CleanupPreviousUpdateAction::ActionCompleted(ErrorCode error_code) {
   running_ = false;
+  ReportMergeStats();
 }
 
 std::string CleanupPreviousUpdateAction::Type() const {
@@ -135,6 +143,11 @@
   if (!boot_control_->IsSlotMarkedSuccessful(boot_control_->GetCurrentSlot())) {
     ScheduleWaitMarkBootSuccessful();
   }
+  if (!merge_stats_->Start()) {
+    // Not an error because CleanupPreviousUpdateAction may be paused and
+    // resumed while kernel continues merging snapshots in the background.
+    LOG(WARNING) << "SnapshotMergeStats::Start failed.";
+  }
   LOG(INFO) << "Waiting for any previous merge request to complete. "
             << "This can take up to several minutes.";
   WaitForMergeOrSchedule();
@@ -154,8 +167,8 @@
   auto state = snapshot_->ProcessUpdateState(
       std::bind(&CleanupPreviousUpdateAction::OnMergePercentageUpdate, this),
       std::bind(&CleanupPreviousUpdateAction::BeforeCancel, this));
+  merge_stats_->set_state(state);
 
-  // TODO(elsk): log stats
   switch (state) {
     case UpdateState::None: {
       LOG(INFO) << "Can't find any snapshot to merge.";
@@ -271,6 +284,7 @@
 
   LOG(WARNING) << "InitiateMerge failed.";
   auto state = snapshot_->GetUpdateState();
+  merge_stats_->set_state(state);
   if (state == UpdateState::Unverified) {
     // We are stuck at unverified state. This can happen if the update has
     // been applied, but it has not even been attempted yet (in libsnapshot,
@@ -296,4 +310,34 @@
   return;
 }
 
+void CleanupPreviousUpdateAction::ReportMergeStats() {
+  auto result = merge_stats_->Finish();
+  if (result == nullptr) {
+    LOG(WARNING) << "Not reporting merge stats because "
+                    "SnapshotMergeStats::Finish failed.";
+    return;
+  }
+
+#ifdef __ANDROID_RECOVERY__
+  LOG(INFO) << "Skip reporting merge stats in recovery.";
+#else
+  const auto& report = result->report();
+
+  if (report.state() == UpdateState::None ||
+      report.state() == UpdateState::Initiated ||
+      report.state() == UpdateState::Unverified) {
+    LOG(INFO) << "Not reporting merge stats because state is "
+              << android::snapshot::UpdateState_Name(report.state());
+    return;
+  }
+
+  auto passed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(
+      result->merge_time());
+  LOG(INFO) << "Reporting merge stats: "
+            << android::snapshot::UpdateState_Name(report.state()) << " in "
+            << passed_ms.count() << "ms (resumed " << report.resume_count()
+            << " times)";
+#endif
+}
+
 }  // namespace chromeos_update_engine
diff --git a/cleanup_previous_update_action.h b/cleanup_previous_update_action.h
index 9afcf27..7b1586c 100644
--- a/cleanup_previous_update_action.h
+++ b/cleanup_previous_update_action.h
@@ -17,10 +17,13 @@
 #ifndef UPDATE_ENGINE_CLEANUP_PREVIOUS_UPDATE_ACTION_H_
 #define UPDATE_ENGINE_CLEANUP_PREVIOUS_UPDATE_ACTION_H_
 
+#include <chrono>  // NOLINT(build/c++11) -- for merge times
+#include <memory>
 #include <string>
 
 #include <brillo/message_loops/message_loop.h>
 #include <libsnapshot/snapshot.h>
+#include <libsnapshot/snapshot_stats.h>
 
 #include "update_engine/common/action.h"
 #include "update_engine/common/boot_control_interface.h"
@@ -69,6 +72,7 @@
   bool running_{false};
   bool cancel_failed_{false};
   unsigned int last_percentage_{0};
+  android::snapshot::SnapshotMergeStats* merge_stats_;
 
   void StartActionInternal();
   void ScheduleWaitBootCompleted();
@@ -78,6 +82,7 @@
   void ScheduleWaitForMerge();
   void WaitForMergeOrSchedule();
   void InitiateMergeAndWait();
+  void ReportMergeStats();
 
   // Callbacks to ProcessUpdateState.
   bool OnMergePercentageUpdate();
