diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index 4efae27..a572471 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -65,7 +65,6 @@
   enum Quirks {
     QUIRKS_UNSPECIFIED = 0;
     DISABLE_INITIAL_DUMP = 1;
-    // TODO(taylori) Not implemented.
     DISABLE_ON_DEMAND = 2;
   }
 
diff --git a/protos/perfetto/config/process_stats/process_stats_config.proto b/protos/perfetto/config/process_stats/process_stats_config.proto
index bce97e7..2f33988 100644
--- a/protos/perfetto/config/process_stats/process_stats_config.proto
+++ b/protos/perfetto/config/process_stats/process_stats_config.proto
@@ -26,7 +26,6 @@
   enum Quirks {
     QUIRKS_UNSPECIFIED = 0;
     DISABLE_INITIAL_DUMP = 1;
-    // TODO(taylori) Not implemented.
     DISABLE_ON_DEMAND = 2;
   }
 
diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc
index 1a3e209..abdbf07 100644
--- a/src/traced/probes/probes_producer.cc
+++ b/src/traced/probes/probes_producer.cc
@@ -223,13 +223,13 @@
   auto trace_writer = endpoint_->CreateTraceWriter(
       static_cast<BufferID>(config.target_buffer()));
   auto source = std::unique_ptr<ProcessStatsDataSource>(
-      new ProcessStatsDataSource(session_id, std::move(trace_writer)));
+      new ProcessStatsDataSource(session_id, std::move(trace_writer), config));
   auto it_and_inserted = process_stats_sources_.emplace(id, std::move(source));
   PERFETTO_DCHECK(it_and_inserted.second);
-  if (std::find(config.process_stats_config().quirks().begin(),
-                config.process_stats_config().quirks().end(),
-                ProcessStatsConfig::DISABLE_INITIAL_DUMP) !=
-      config.process_stats_config().quirks().end()) {
+  const auto& quirks =
+      it_and_inserted.first->second->config().process_stats_config().quirks();
+  if (std::find(quirks.begin(), quirks.end(),
+                ProcessStatsConfig::DISABLE_INITIAL_DUMP) != quirks.end()) {
     PERFETTO_DLOG("Initial process tree dump is disabled.");
     return;
   }
@@ -301,15 +301,6 @@
     const FtraceMetadata& metadata) {
   trace_packet_->Finalize();
 
-  if (ps_source_ && !metadata.pids.empty()) {
-    const auto& pids = metadata.pids;
-    auto weak_ps_source = ps_source_;
-    task_runner_->PostTask([weak_ps_source, pids] {
-      if (weak_ps_source)
-        weak_ps_source->OnPids(pids);
-    });
-  }
-
   if (file_source_ && !metadata.inode_and_device.empty()) {
     auto inodes = metadata.inode_and_device;
     auto weak_file_source = file_source_;
@@ -318,6 +309,19 @@
         weak_file_source->OnInodes(inodes);
     });
   }
+  if (ps_source_ && !metadata.pids.empty()) {
+    const auto& quirks = ps_source_->config().process_stats_config().quirks();
+    if (std::find(quirks.begin(), quirks.end(),
+                  ProcessStatsConfig::DISABLE_ON_DEMAND) != quirks.end()) {
+      return;
+    }
+    const auto& pids = metadata.pids;
+    auto weak_ps_source = ps_source_;
+    task_runner_->PostTask([weak_ps_source, pids] {
+      if (weak_ps_source)
+        weak_ps_source->OnPids(pids);
+    });
+  }
 }
 
 }  // namespace perfetto
diff --git a/src/traced/probes/process_stats_data_source.cc b/src/traced/probes/process_stats_data_source.cc
index a1bffd8..79f1b4a 100644
--- a/src/traced/probes/process_stats_data_source.cc
+++ b/src/traced/probes/process_stats_data_source.cc
@@ -27,8 +27,12 @@
 
 ProcessStatsDataSource::ProcessStatsDataSource(
     TracingSessionID id,
-    std::unique_ptr<TraceWriter> writer)
-    : session_id_(id), writer_(std::move(writer)), weak_factory_(this) {}
+    std::unique_ptr<TraceWriter> writer,
+    const DataSourceConfig& config)
+    : session_id_(id),
+      writer_(std::move(writer)),
+      config_(config),
+      weak_factory_(this) {}
 
 ProcessStatsDataSource::~ProcessStatsDataSource() = default;
 
@@ -54,6 +58,8 @@
                                      WriteProcess(pid, trace_packet_ptr);
                                      seen_pids->insert(pid);
                                    });
+  trace_packet->Finalize();
+  writer_->Flush();
 }
 
 void ProcessStatsDataSource::OnPids(const std::vector<int32_t>& pids) {
diff --git a/src/traced/probes/process_stats_data_source.h b/src/traced/probes/process_stats_data_source.h
index f134bff..5766e4d 100644
--- a/src/traced/probes/process_stats_data_source.h
+++ b/src/traced/probes/process_stats_data_source.h
@@ -23,16 +23,21 @@
 
 #include "perfetto/base/weak_ptr.h"
 #include "perfetto/tracing/core/basic_types.h"
+#include "perfetto/tracing/core/data_source_config.h"
 #include "perfetto/tracing/core/trace_writer.h"
 
 namespace perfetto {
 
 class ProcessStatsDataSource {
  public:
-  ProcessStatsDataSource(TracingSessionID, std::unique_ptr<TraceWriter> writer);
+  ProcessStatsDataSource(TracingSessionID,
+                         std::unique_ptr<TraceWriter> writer,
+                         const DataSourceConfig&);
   ~ProcessStatsDataSource();
 
   TracingSessionID session_id() const { return session_id_; }
+  const DataSourceConfig& config() const { return config_; }
+
   base::WeakPtr<ProcessStatsDataSource> GetWeakPtr() const;
   void WriteAllProcesses();
   void OnPids(const std::vector<int32_t>& pids);
@@ -45,6 +50,7 @@
 
   const TracingSessionID session_id_;
   std::unique_ptr<TraceWriter> writer_;
+  const DataSourceConfig config_;
   // TODO(b/76663469): Optimization: use a bitmap.
   std::set<int32_t> seen_pids_;
   base::WeakPtrFactory<ProcessStatsDataSource> weak_factory_;  // Keep last.
