diff --git a/docs/reference/syscalls/debuglog_read.md b/docs/reference/syscalls/debuglog_read.md
index 56d5dff..76b1f48 100644
--- a/docs/reference/syscalls/debuglog_read.md
+++ b/docs/reference/syscalls/debuglog_read.md
@@ -34,7 +34,7 @@
 
 ```c
 typedef struct zx_log_record {
-  uint32_t rollout;
+  uint32_t unused;
   uint16_t datalen;
   uint8_t severity;
   uint8_t flags;
@@ -49,10 +49,6 @@
 
 | Field       | Description                                                    |
 | ----------- | -------------------------------------------------------------- |
-| *rollout*   | Number of bytes of log messages (including headers) dropped    |
-:             : since the last call to `zx_debuglog_read` on this object. The  :
-:             : kernel will drop the oldest log messages when its internal     :
-:             : buffer becomes full.                                           :
 | *datalen*   | Number of bytes of data in the *data* field.                   |
 | *severity*  | Severity of this log message. Standard severity levels are     |
 :             : defined in the header `zircon/syscalls/log.h`.                 :
diff --git a/src/diagnostics/archivist/src/fuzzer.rs b/src/diagnostics/archivist/src/fuzzer.rs
index 2057754..5fc1711 100644
--- a/src/diagnostics/archivist/src/fuzzer.rs
+++ b/src/diagnostics/archivist/src/fuzzer.rs
@@ -21,7 +21,7 @@
 
 impl Arbitrary for RandomLogRecord {
     fn arbitrary(u: &mut Unstructured<'_>) -> Result<Self> {
-        let rollout = u32::arbitrary(u)?;
+        let unused = u32::arbitrary(u)?;
         let datalen = u16::arbitrary(u)?;
         let severity = u8::arbitrary(u)?;
         let flags = u8::arbitrary(u)?;
@@ -35,7 +35,7 @@
         u.fill_buffer(&mut partial)?;
 
         Ok(RandomLogRecord(zx::sys::zx_log_record_t {
-            rollout,
+            unused,
             datalen,
             severity,
             flags,
diff --git a/src/diagnostics/archivist/src/logs/testing.rs b/src/diagnostics/archivist/src/logs/testing.rs
index 7f0f779..d1b2c09 100644
--- a/src/diagnostics/archivist/src/logs/testing.rs
+++ b/src/diagnostics/archivist/src/logs/testing.rs
@@ -487,7 +487,7 @@
     pub fn new(log_data: &[u8]) -> Self {
         let mut rec = zx::sys::zx_log_record_t::default();
         let len = rec.data.len().min(log_data.len());
-        rec.rollout = 0;
+        rec.unused = 0;
         rec.datalen = len as u16;
         rec.flags = TEST_KLOG_FLAGS;
         rec.timestamp = TEST_KLOG_TIMESTAMP;
diff --git a/src/lib/zircon/rust/fuchsia-zircon-types/src/lib.rs b/src/lib/zircon/rust/fuchsia-zircon-types/src/lib.rs
index 7744781..6b9fe7d 100644
--- a/src/lib/zircon/rust/fuchsia-zircon-types/src/lib.rs
+++ b/src/lib/zircon/rust/fuchsia-zircon-types/src/lib.rs
@@ -1228,7 +1228,7 @@
     #[repr(C)]
     #[derive(Debug, Copy, Clone, Eq, PartialEq)]
     pub struct <zx_log_record_t> {
-        pub rollout: u32,
+        pub unused: u32,
         pub datalen: u16,
         pub severity: u8,
         pub flags: u8,
@@ -1244,7 +1244,7 @@
 impl Default for zx_log_record_t {
     fn default() -> zx_log_record_t {
         zx_log_record_t {
-            rollout: 0,
+            unused: 0,
             datalen: 0,
             severity: 0,
             flags: 0,
diff --git a/zircon/kernel/lib/debuglog/debuglog.cc b/zircon/kernel/lib/debuglog/debuglog.cc
index c3e7a812..d5b0c26 100644
--- a/zircon/kernel/lib/debuglog/debuglog.cc
+++ b/zircon/kernel/lib/debuglog/debuglog.cc
@@ -228,14 +228,12 @@
     Guard<SpinLock, IrqSave> guard{&log->lock};
 
     size_t rtail = tail_;
-    uint32_t rolled_out = 0;
 
     // If the read-tail is not within the range of log-tail..log-head
     // this reader has been lapped by a writer and we reset our read-tail
     // to the current log-tail.
     //
     if ((log->head - log->tail) < (log->head - rtail)) {
-      rolled_out = static_cast<uint32_t>(log->tail - rtail);
       rtail = log->tail;
     }
 
@@ -255,7 +253,7 @@
         memcpy(record, record_start, fifospace);
         memcpy(reinterpret_cast<char*>(record) + fifospace, log->data, actual - fifospace);
       }
-      record->hdr.preamble = rolled_out;
+      record->hdr.preamble = 0;
 
       *_actual = actual;
       status = ZX_OK;
diff --git a/zircon/kernel/lib/debuglog/debuglog_tests.cc b/zircon/kernel/lib/debuglog/debuglog_tests.cc
index 81c044b..173af89 100644
--- a/zircon/kernel/lib/debuglog/debuglog_tests.cc
+++ b/zircon/kernel/lib/debuglog/debuglog_tests.cc
@@ -119,7 +119,8 @@
   END_TEST;
 }
 
-bool log_reader_rollout() {
+// Write to the log, exceeding its capacity and see that data is lost.
+bool log_reader_dataloss() {
   BEGIN_TEST;
 
   fbl::AllocChecker ac;
@@ -165,11 +166,7 @@
     num_read++;
     ASSERT_EQ(sizeof(dlog_header) + sizeof(msg), got);
     EXPECT_EQ(DEBUGLOG_WARNING, rec.hdr.severity);
-    if (num_read == 1) {
-      EXPECT_EQ(sizeof(dlog_header_t) + sizeof(msg), rec.hdr.preamble);
-    } else {
-      EXPECT_EQ(0u, rec.hdr.preamble);
-    }
+    EXPECT_EQ(0u, rec.hdr.preamble);
     EXPECT_EQ(0, rec.hdr.flags);
     EXPECT_EQ(ZX_KOID_INVALID, rec.hdr.pid);
     EXPECT_NE(ZX_KOID_INVALID, rec.hdr.tid);
@@ -236,6 +233,6 @@
 DEBUGLOG_UNITTEST(log_format)
 DEBUGLOG_UNITTEST(log_wrap)
 DEBUGLOG_UNITTEST(log_reader_read)
-DEBUGLOG_UNITTEST(log_reader_rollout)
+DEBUGLOG_UNITTEST(log_reader_dataloss)
 DEBUGLOG_UNITTEST(shutdown)
 UNITTEST_END_TESTCASE(debuglog_tests, "debuglog_tests", "Debuglog test")
diff --git a/zircon/kernel/lib/debuglog/include/lib/debuglog.h b/zircon/kernel/lib/debuglog/include/lib/debuglog.h
index 783472f..b4a884d 100644
--- a/zircon/kernel/lib/debuglog/include/lib/debuglog.h
+++ b/zircon/kernel/lib/debuglog/include/lib/debuglog.h
@@ -73,11 +73,7 @@
   // (|DLOG_HDR_READLEN|) and the record's size when padded out to live in the
   // FIFO (|DLOG_HDR_FIFOLEN|).
   //
-  // After being read out of a debuglog, the |preamble| field contains the
-  // number of bytes (across both headers and messages) that were dropped from
-  // the log since the last message was read. Note, this is a 32-bit value so if
-  // approximately 4GB of data is written in between two read operations, data
-  // loss may go undetected.
+  // After being read out of a debuglog, the |preamble| field is 0.
   uint32_t preamble;
   uint16_t datalen;
   uint8_t severity;
diff --git a/zircon/system/public/zircon/syscalls/log.h b/zircon/system/public/zircon/syscalls/log.h
index 0f72348..a60649e 100644
--- a/zircon/system/public/zircon/syscalls/log.h
+++ b/zircon/system/public/zircon/syscalls/log.h
@@ -11,7 +11,7 @@
 
 // Defines and structures for zx_log_*()
 typedef struct zx_log_record {
-  uint32_t rollout;
+  uint32_t unused;
   uint16_t datalen;
   uint8_t severity;
   uint8_t flags;
