diff --git a/docs/running_perfetto.md b/docs/running_perfetto.md
index 54ed96b..ba59432 100644
--- a/docs/running_perfetto.md
+++ b/docs/running_perfetto.md
@@ -16,12 +16,11 @@
 
 
 ## Instructions:
+Make sure that Perfetto daemons (`traced` / `traced_probes`) are started.
+They are enabled by default on Pixel and Pixel 2 (walleye, taimen, marlin,
+sailfish). On other devices start them manually by doing:
 ```
-# TODO(primiano): this is temporary until we fix SELinux policies.
-adb shell su root setenforce 0
-
-adb shell su root start traced
-adb shell su root start traced_probes
+adb shell setprop persist.traced.enable 1
 ```
 
 If this works you will see something like:
@@ -36,48 +35,61 @@
 At which point you can grab a trace by doing:
 
 ```
-$ adb shell perfetto --config :test --out /data/local/tmp/trace
+$ adb shell perfetto --config :test --out /data/misc/perfetto-traces/trace
 ```
 
-or to save it to [Android's Dropbox][dropbox]:
+Note: If the output file is not under `/data/misc/perfetto-traces`, it might
+fail due to SELinux (shell is allowed to read that directory).
+
+Alternatively, it can be saved to [Android's Dropbox][dropbox]
+(to test the uploader):
 
 ```
 $ adb shell perfetto --config :test --dropbox perfetto
 ```
 
+### Trace config
 `--config :test` uses a hard-coded test trace config. It is possible to pass
 an arbitrary trace config by doing the following:
 ```
 cat > /tmp/config.txpb <<EOF
 # This is a text-encoded protobuf for /protos/perfetto/config/trace_config.proto
-duration_ms: 2000
+duration_ms: 10000
+
 buffers {
-  size_kb: 1024
-  optimize_for: ONE_SHOT_READ
-  fill_policy: RING_BUFFER
+  size_kb: 10240
 }
+
 data_sources {
   config {
     name: "com.google.perfetto.ftrace"
     target_buffer: 0
     ftrace_config {
-      event_names: "sched_switch"
+      buffer_size_kb: 40 # Kernel ftrace buffer size.
+      ftrace_events: "sched_switch"
+      ftrace_events: "print"
     }
   }
 }
+
+data_sources {
+  config {
+    name: "com.google.perfetto.process_stats"
+    target_buffer: 0
+  }
+}
 EOF
 
 protoc=$(pwd)/out/android/gcc_like_host/protoc
 
 $protoc --encode=perfetto.protos.TraceConfig \
         -I$(pwd)/external/perfetto/protos \
-        $(pwd)/external/perfetto/protos/perfetto/config/trace_config.proto \
+        $(pwd)/external/perfetto/protos/perfetto/config/perfetto_config.proto \
         < /tmp/config.txpb \
         > /tmp/config.pb
 
-adb push /tmp/config.pb /data/local/tmp/
-adb shell perfetto -c /data/local/tmp/config.pb -o /data/local/tmp/trace.pb
-adb pull /data/local/tmp/trace.pb /tmp/
+cat /tmp/config.pb | adb shell perfetto -c - -o /data/misc/perfetto-traces/trace.pb
+adb pull /data/misc/perfetto-traces/trace.pb /tmp/
 out/android/trace_to_text systrace < /tmp/trace.pb > /tmp/trace.json
 
 # The file can now be viewed in chrome://tracing
diff --git a/include/perfetto/ftrace_reader/BUILD.gn b/include/perfetto/ftrace_reader/BUILD.gn
index fecb7cd..4fba481 100644
--- a/include/perfetto/ftrace_reader/BUILD.gn
+++ b/include/perfetto/ftrace_reader/BUILD.gn
@@ -15,6 +15,7 @@
 source_set("ftrace_reader") {
   public_deps = [
     "../base",
+    "../traced",
   ]
   sources = [
     "format_parser.h",
diff --git a/include/perfetto/ftrace_reader/ftrace_controller.h b/include/perfetto/ftrace_reader/ftrace_controller.h
index 90d2bc5..4953b37 100644
--- a/include/perfetto/ftrace_reader/ftrace_controller.h
+++ b/include/perfetto/ftrace_reader/ftrace_controller.h
@@ -19,6 +19,7 @@
 
 #include <unistd.h>
 
+#include <sys/stat.h>
 #include <bitset>
 #include <condition_variable>
 #include <map>
@@ -34,21 +35,25 @@
 #include "perfetto/base/weak_ptr.h"
 #include "perfetto/ftrace_reader/ftrace_config.h"
 #include "perfetto/protozero/message_handle.h"
+#include "perfetto/traced/data_source_types.h"
 
 namespace perfetto {
 
+using BlockDeviceID = decltype(stat::st_dev);
+using Inode = decltype(stat::st_ino);
+
 struct FtraceMetadata {
   FtraceMetadata();
 
   size_t overwrite_count;
-  uint32_t last_seen_device_id;
+  BlockDeviceID last_seen_device_id;
 
   // A vector not a set to keep the writer_fast.
-  std::vector<std::pair<uint64_t, uint32_t>> inodes;
+  std::vector<std::pair<Inode, BlockDeviceID>> inode_and_device;
   std::vector<int32_t> pids;
 
-  void AddDevice(uint32_t);
-  void AddInode(uint64_t);
+  void AddDevice(BlockDeviceID);
+  void AddInode(Inode);
   void AddPid(int32_t);
   void Clear();
 };
diff --git a/include/perfetto/traced/BUILD.gn b/include/perfetto/traced/BUILD.gn
index 4d9fe0c..fefc5fa 100644
--- a/include/perfetto/traced/BUILD.gn
+++ b/include/perfetto/traced/BUILD.gn
@@ -14,6 +14,7 @@
 
 source_set("traced") {
   sources = [
+    "data_source_types.h",
     "traced.h",
   ]
 }
diff --git a/include/perfetto/traced/data_source_types.h b/include/perfetto/traced/data_source_types.h
new file mode 100644
index 0000000..1c4f1b0
--- /dev/null
+++ b/include/perfetto/traced/data_source_types.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef INCLUDE_PERFETTO_TRACED_DATA_SOURCE_TYPES_H_
+#define INCLUDE_PERFETTO_TRACED_DATA_SOURCE_TYPES_H_
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+namespace perfetto {
+
+// On ARM, st_ino is not ino_t but unsigned long long.
+using Inode = decltype(stat::st_ino);
+
+// On ARM, st_dev is not dev_t but unsigned long long.
+using BlockDeviceID = decltype(stat::st_dev);
+
+}  // namespace perfetto
+
+#endif  // INCLUDE_PERFETTO_TRACED_DATA_SOURCE_TYPES_H_
diff --git a/protos/perfetto/trace/ftrace/block_bio_backmerge.proto b/protos/perfetto/trace/ftrace/block_bio_backmerge.proto
index ffc4c26..4ced370 100644
--- a/protos/perfetto/trace/ftrace/block_bio_backmerge.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_backmerge.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockBioBackmergeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_bio_bounce.proto b/protos/perfetto/trace/ftrace/block_bio_bounce.proto
index b8c3c54..052bbca 100644
--- a/protos/perfetto/trace/ftrace/block_bio_bounce.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_bounce.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockBioBounceFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_bio_complete.proto b/protos/perfetto/trace/ftrace/block_bio_complete.proto
index 3e60f48..49d7ad4 100644
--- a/protos/perfetto/trace/ftrace/block_bio_complete.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_complete.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockBioCompleteFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional int32 error = 4;
diff --git a/protos/perfetto/trace/ftrace/block_bio_frontmerge.proto b/protos/perfetto/trace/ftrace/block_bio_frontmerge.proto
index 1f065a8..603b3cc 100644
--- a/protos/perfetto/trace/ftrace/block_bio_frontmerge.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_frontmerge.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockBioFrontmergeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_bio_queue.proto b/protos/perfetto/trace/ftrace/block_bio_queue.proto
index c531f14..aa414d8 100644
--- a/protos/perfetto/trace/ftrace/block_bio_queue.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_queue.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockBioQueueFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_bio_remap.proto b/protos/perfetto/trace/ftrace/block_bio_remap.proto
index 6f82a22..8dcafe8 100644
--- a/protos/perfetto/trace/ftrace/block_bio_remap.proto
+++ b/protos/perfetto/trace/ftrace/block_bio_remap.proto
@@ -7,10 +7,10 @@
 package perfetto.protos;
 
 message BlockBioRemapFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
-  optional uint32 old_dev = 4;
+  optional uint64 old_dev = 4;
   optional uint64 old_sector = 5;
   optional string rwbs = 6;
 }
diff --git a/protos/perfetto/trace/ftrace/block_dirty_buffer.proto b/protos/perfetto/trace/ftrace/block_dirty_buffer.proto
index f59bfe5..3e736d7 100644
--- a/protos/perfetto/trace/ftrace/block_dirty_buffer.proto
+++ b/protos/perfetto/trace/ftrace/block_dirty_buffer.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockDirtyBufferFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint64 size = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/block_getrq.proto b/protos/perfetto/trace/ftrace/block_getrq.proto
index 2b52d52..a757b38 100644
--- a/protos/perfetto/trace/ftrace/block_getrq.proto
+++ b/protos/perfetto/trace/ftrace/block_getrq.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockGetrqFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_rq_abort.proto b/protos/perfetto/trace/ftrace/block_rq_abort.proto
index fdaba4d..a15d1b6 100644
--- a/protos/perfetto/trace/ftrace/block_rq_abort.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_abort.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockRqAbortFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional int32 errors = 4;
diff --git a/protos/perfetto/trace/ftrace/block_rq_complete.proto b/protos/perfetto/trace/ftrace/block_rq_complete.proto
index 98f410b..1d285eb 100644
--- a/protos/perfetto/trace/ftrace/block_rq_complete.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_complete.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockRqCompleteFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional int32 errors = 4;
diff --git a/protos/perfetto/trace/ftrace/block_rq_insert.proto b/protos/perfetto/trace/ftrace/block_rq_insert.proto
index 9cb4c8f..4ae6470 100644
--- a/protos/perfetto/trace/ftrace/block_rq_insert.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_insert.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockRqInsertFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional uint32 bytes = 4;
diff --git a/protos/perfetto/trace/ftrace/block_rq_issue.proto b/protos/perfetto/trace/ftrace/block_rq_issue.proto
index e266c37..aea840f 100644
--- a/protos/perfetto/trace/ftrace/block_rq_issue.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_issue.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockRqIssueFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional uint32 bytes = 4;
diff --git a/protos/perfetto/trace/ftrace/block_rq_remap.proto b/protos/perfetto/trace/ftrace/block_rq_remap.proto
index 5491f09..250e0d7 100644
--- a/protos/perfetto/trace/ftrace/block_rq_remap.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_remap.proto
@@ -7,10 +7,10 @@
 package perfetto.protos;
 
 message BlockRqRemapFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
-  optional uint32 old_dev = 4;
+  optional uint64 old_dev = 4;
   optional uint64 old_sector = 5;
   optional uint32 nr_bios = 6;
   optional string rwbs = 7;
diff --git a/protos/perfetto/trace/ftrace/block_rq_requeue.proto b/protos/perfetto/trace/ftrace/block_rq_requeue.proto
index 4a1a9b2..a749787 100644
--- a/protos/perfetto/trace/ftrace/block_rq_requeue.proto
+++ b/protos/perfetto/trace/ftrace/block_rq_requeue.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockRqRequeueFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional int32 errors = 4;
diff --git a/protos/perfetto/trace/ftrace/block_sleeprq.proto b/protos/perfetto/trace/ftrace/block_sleeprq.proto
index f00c291..36234f1 100644
--- a/protos/perfetto/trace/ftrace/block_sleeprq.proto
+++ b/protos/perfetto/trace/ftrace/block_sleeprq.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockSleeprqFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint32 nr_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_split.proto b/protos/perfetto/trace/ftrace/block_split.proto
index c00b19b..d0ac0dd 100644
--- a/protos/perfetto/trace/ftrace/block_split.proto
+++ b/protos/perfetto/trace/ftrace/block_split.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockSplitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint64 new_sector = 3;
   optional string rwbs = 4;
diff --git a/protos/perfetto/trace/ftrace/block_touch_buffer.proto b/protos/perfetto/trace/ftrace/block_touch_buffer.proto
index 63908cf..9a82669 100644
--- a/protos/perfetto/trace/ftrace/block_touch_buffer.proto
+++ b/protos/perfetto/trace/ftrace/block_touch_buffer.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message BlockTouchBufferFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 sector = 2;
   optional uint64 size = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto b/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto
index 633a636..c80946f 100644
--- a/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_alloc_da_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4AllocDaBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 data_blocks = 3;
   optional uint32 meta_blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto b/protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto
index 450ea71..8ac8189 100644
--- a/protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_allocate_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4AllocateBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 block = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_allocate_inode.proto b/protos/perfetto/trace/ftrace/ext4_allocate_inode.proto
index f158a4e..eeb3fee 100644
--- a/protos/perfetto/trace/ftrace/ext4_allocate_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_allocate_inode.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4AllocateInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 dir = 3;
   optional uint32 mode = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_begin_ordered_truncate.proto b/protos/perfetto/trace/ftrace/ext4_begin_ordered_truncate.proto
index 9dec91f..2bff30a 100644
--- a/protos/perfetto/trace/ftrace/ext4_begin_ordered_truncate.proto
+++ b/protos/perfetto/trace/ftrace/ext4_begin_ordered_truncate.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4BeginOrderedTruncateFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 new_size = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_collapse_range.proto b/protos/perfetto/trace/ftrace/ext4_collapse_range.proto
index b8a2068..b3894c9 100644
--- a/protos/perfetto/trace/ftrace/ext4_collapse_range.proto
+++ b/protos/perfetto/trace/ftrace/ext4_collapse_range.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4CollapseRangeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 offset = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_release_space.proto b/protos/perfetto/trace/ftrace/ext4_da_release_space.proto
index 08bde5e..d54c947 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_release_space.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_release_space.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaReleaseSpaceFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 i_blocks = 3;
   optional int32 freed_blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto b/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
index 5815f7d..841fa55 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaReserveSpaceFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 i_blocks = 3;
   optional int32 reserved_data_blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_update_reserve_space.proto b/protos/perfetto/trace/ftrace/ext4_da_update_reserve_space.proto
index c1c2f15..c13354e 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_update_reserve_space.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_update_reserve_space.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaUpdateReserveSpaceFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 i_blocks = 3;
   optional int32 used_blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_write_begin.proto b/protos/perfetto/trace/ftrace/ext4_da_write_begin.proto
index 25237cb..3b2e1bd 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_write_begin.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_write_begin.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaWriteBeginFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_write_end.proto b/protos/perfetto/trace/ftrace/ext4_da_write_end.proto
index 6972d17..70199f8 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_write_end.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_write_end.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaWriteEndFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto b/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
index 3c7b96e..1d3c076 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaWritePagesFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 first_page = 3;
   optional int64 nr_to_write = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_da_write_pages_extent.proto b/protos/perfetto/trace/ftrace/ext4_da_write_pages_extent.proto
index 7a13f9d..3756157 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_write_pages_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_write_pages_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DaWritePagesExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_direct_IO_enter.proto b/protos/perfetto/trace/ftrace/ext4_direct_IO_enter.proto
index 59688c9..21bbcaf 100644
--- a/protos/perfetto/trace/ftrace/ext4_direct_IO_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_direct_IO_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DirectIOEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_direct_IO_exit.proto b/protos/perfetto/trace/ftrace/ext4_direct_IO_exit.proto
index b58f6ca..9b77ab7 100644
--- a/protos/perfetto/trace/ftrace/ext4_direct_IO_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_direct_IO_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DirectIOExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_discard_blocks.proto b/protos/perfetto/trace/ftrace/ext4_discard_blocks.proto
index 2b3e777..6e14a50 100644
--- a/protos/perfetto/trace/ftrace/ext4_discard_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_discard_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DiscardBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 blk = 2;
   optional uint64 count = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_discard_preallocations.proto b/protos/perfetto/trace/ftrace/ext4_discard_preallocations.proto
index 4152887..8cb43c2 100644
--- a/protos/perfetto/trace/ftrace/ext4_discard_preallocations.proto
+++ b/protos/perfetto/trace/ftrace/ext4_discard_preallocations.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4DiscardPreallocationsFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_drop_inode.proto b/protos/perfetto/trace/ftrace/ext4_drop_inode.proto
index f9785b7..c5744df 100644
--- a/protos/perfetto/trace/ftrace/ext4_drop_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_drop_inode.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4DropInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 drop = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_es_cache_extent.proto b/protos/perfetto/trace/ftrace/ext4_es_cache_extent.proto
index 95408f6..502e3a8 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_cache_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_cache_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsCacheExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_enter.proto b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_enter.proto
index fda9034..07d1fc0 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
index 21630d3..fd50288 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsFindDelayedExtentRangeExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto b/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
index c29641c..aca9db7 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsInsertExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto
index 2f82152..7f52999 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsLookupExtentEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
index df475fb..e7ca8e4 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsLookupExtentExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_remove_extent.proto b/protos/perfetto/trace/ftrace/ext4_es_remove_extent.proto
index 7e67019..f853608 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_remove_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_remove_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsRemoveExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 lblk = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_shrink.proto b/protos/perfetto/trace/ftrace/ext4_es_shrink.proto
index 3ef83a7..41f449c 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_shrink.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_shrink.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsShrinkFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 nr_shrunk = 2;
   optional uint64 scan_time = 3;
   optional int32 nr_skipped = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_es_shrink_count.proto b/protos/perfetto/trace/ftrace/ext4_es_shrink_count.proto
index aac2143..c4daf6e 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_shrink_count.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_shrink_count.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsShrinkCountFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 nr_to_scan = 2;
   optional int32 cache_cnt = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_enter.proto b/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_enter.proto
index a98ab0b..d4435e0 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsShrinkScanEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 nr_to_scan = 2;
   optional int32 cache_cnt = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_exit.proto b/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_exit.proto
index a959b40..bf31648 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_shrink_scan_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EsShrinkScanExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 nr_shrunk = 2;
   optional int32 cache_cnt = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_evict_inode.proto b/protos/perfetto/trace/ftrace/ext4_evict_inode.proto
index 763a916..ae0e42d 100644
--- a/protos/perfetto/trace/ftrace/ext4_evict_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_evict_inode.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4EvictInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 nlink = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_enter.proto b/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_enter.proto
index 18d000a..5d16860 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtConvertToInitializedEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 m_lblk = 3;
   optional uint32 m_len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_fastpath.proto b/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_fastpath.proto
index f25d01f..54c2418 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_fastpath.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_convert_to_initialized_fastpath.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtConvertToInitializedFastpathFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 m_lblk = 3;
   optional uint32 m_len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_handle_unwritten_extents.proto b/protos/perfetto/trace/ftrace/ext4_ext_handle_unwritten_extents.proto
index 6a84188..b2f9eb5 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_handle_unwritten_extents.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_handle_unwritten_extents.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtHandleUnwrittenExtentsFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 flags = 3;
   optional uint32 lblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_in_cache.proto b/protos/perfetto/trace/ftrace/ext4_ext_in_cache.proto
index ee61bc6..47c2bf9 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_in_cache.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_in_cache.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtInCacheFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional int32 ret = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_load_extent.proto b/protos/perfetto/trace/ftrace/ext4_ext_load_extent.proto
index 070c6d6..45ecb56 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_load_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_load_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtLoadExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 pblk = 3;
   optional uint32 lblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_enter.proto b/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_enter.proto
index f561978..0d8a15f 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtMapBlocksEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_exit.proto b/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_exit.proto
index a0c6a50..4cdc00d 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_map_blocks_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtMapBlocksExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 flags = 3;
   optional uint64 pblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_put_in_cache.proto b/protos/perfetto/trace/ftrace/ext4_ext_put_in_cache.proto
index 58ad6b0..eff3942 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_put_in_cache.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_put_in_cache.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtPutInCacheFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_remove_space.proto b/protos/perfetto/trace/ftrace/ext4_ext_remove_space.proto
index 93d9bf3..d6564e9 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_remove_space.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_remove_space.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtRemoveSpaceFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 start = 3;
   optional uint32 end = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_remove_space_done.proto b/protos/perfetto/trace/ftrace/ext4_ext_remove_space_done.proto
index da8566f..f8bdf70 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_remove_space_done.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_remove_space_done.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtRemoveSpaceDoneFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 start = 3;
   optional uint32 end = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_rm_idx.proto b/protos/perfetto/trace/ftrace/ext4_ext_rm_idx.proto
index ac81910..5c46720 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_rm_idx.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_rm_idx.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtRmIdxFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 pblk = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_rm_leaf.proto b/protos/perfetto/trace/ftrace/ext4_ext_rm_leaf.proto
index f7b8e69..47a6d2f 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_rm_leaf.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_rm_leaf.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtRmLeafFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 partial = 3;
   optional uint32 start = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ext_show_extent.proto b/protos/perfetto/trace/ftrace/ext4_ext_show_extent.proto
index 37a2dab..cc5774c 100644
--- a/protos/perfetto/trace/ftrace/ext4_ext_show_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ext_show_extent.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ExtShowExtentFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 pblk = 3;
   optional uint32 lblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto b/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
index f6f783a..162779f 100644
--- a/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4FallocateEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 offset = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_fallocate_exit.proto b/protos/perfetto/trace/ftrace/ext4_fallocate_exit.proto
index a44cbe9..a0dcf57 100644
--- a/protos/perfetto/trace/ftrace/ext4_fallocate_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_fallocate_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4FallocateExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_find_delalloc_range.proto b/protos/perfetto/trace/ftrace/ext4_find_delalloc_range.proto
index 6a0d2b4..b8816b0 100644
--- a/protos/perfetto/trace/ftrace/ext4_find_delalloc_range.proto
+++ b/protos/perfetto/trace/ftrace/ext4_find_delalloc_range.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4FindDelallocRangeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 from = 3;
   optional uint32 to = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_forget.proto b/protos/perfetto/trace/ftrace/ext4_forget.proto
index 8a8acc8..5d34bc1 100644
--- a/protos/perfetto/trace/ftrace/ext4_forget.proto
+++ b/protos/perfetto/trace/ftrace/ext4_forget.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ForgetFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 block = 3;
   optional int32 is_metadata = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_free_blocks.proto b/protos/perfetto/trace/ftrace/ext4_free_blocks.proto
index 9e652c4..338c4cf 100644
--- a/protos/perfetto/trace/ftrace/ext4_free_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_free_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4FreeBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 block = 3;
   optional uint64 count = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_free_inode.proto b/protos/perfetto/trace/ftrace/ext4_free_inode.proto
index c1d240f..d049f2d 100644
--- a/protos/perfetto/trace/ftrace/ext4_free_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_free_inode.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4FreeInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 uid = 3;
   optional uint32 gid = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_get_implied_cluster_alloc_exit.proto b/protos/perfetto/trace/ftrace/ext4_get_implied_cluster_alloc_exit.proto
index b500d1f..afa4438 100644
--- a/protos/perfetto/trace/ftrace/ext4_get_implied_cluster_alloc_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_get_implied_cluster_alloc_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4GetImpliedClusterAllocExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint32 flags = 2;
   optional uint32 lblk = 3;
   optional uint64 pblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_get_reserved_cluster_alloc.proto b/protos/perfetto/trace/ftrace/ext4_get_reserved_cluster_alloc.proto
index cb9cdfc..d44e2c1 100644
--- a/protos/perfetto/trace/ftrace/ext4_get_reserved_cluster_alloc.proto
+++ b/protos/perfetto/trace/ftrace/ext4_get_reserved_cluster_alloc.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4GetReservedClusterAllocFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_enter.proto b/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_enter.proto
index cfa6304..f4c1a94 100644
--- a/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4IndMapBlocksEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 lblk = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_exit.proto b/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_exit.proto
index bd368eb..f942d3d 100644
--- a/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_ind_map_blocks_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4IndMapBlocksExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 flags = 3;
   optional uint64 pblk = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_insert_range.proto b/protos/perfetto/trace/ftrace/ext4_insert_range.proto
index 4010cf0..bfb5ab2 100644
--- a/protos/perfetto/trace/ftrace/ext4_insert_range.proto
+++ b/protos/perfetto/trace/ftrace/ext4_insert_range.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4InsertRangeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 offset = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto b/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
index 951ff05..ce49c38 100644
--- a/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4InvalidatepageFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 index = 3;
   optional uint32 offset = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_journal_start.proto b/protos/perfetto/trace/ftrace/ext4_journal_start.proto
index f361673..896ca59 100644
--- a/protos/perfetto/trace/ftrace/ext4_journal_start.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journal_start.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4JournalStartFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ip = 2;
   optional int32 blocks = 3;
   optional int32 rsv_blocks = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_journal_start_reserved.proto b/protos/perfetto/trace/ftrace/ext4_journal_start_reserved.proto
index 61d3cc7..58f4340 100644
--- a/protos/perfetto/trace/ftrace/ext4_journal_start_reserved.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journal_start_reserved.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4JournalStartReservedFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ip = 2;
   optional int32 blocks = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto b/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
index 4503ec2..a5c544f 100644
--- a/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4JournalledInvalidatepageFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 index = 3;
   optional uint32 offset = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_journalled_write_end.proto b/protos/perfetto/trace/ftrace/ext4_journalled_write_end.proto
index 8cebed4..f137b6d 100644
--- a/protos/perfetto/trace/ftrace/ext4_journalled_write_end.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journalled_write_end.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4JournalledWriteEndFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_load_inode.proto b/protos/perfetto/trace/ftrace/ext4_load_inode.proto
index 3bfa913..21361ad 100644
--- a/protos/perfetto/trace/ftrace/ext4_load_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_load_inode.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4LoadInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_load_inode_bitmap.proto b/protos/perfetto/trace/ftrace/ext4_load_inode_bitmap.proto
index 41082d8..d40b933 100644
--- a/protos/perfetto/trace/ftrace/ext4_load_inode_bitmap.proto
+++ b/protos/perfetto/trace/ftrace/ext4_load_inode_bitmap.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4LoadInodeBitmapFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint32 group = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mark_inode_dirty.proto b/protos/perfetto/trace/ftrace/ext4_mark_inode_dirty.proto
index e291d9f..c228b21 100644
--- a/protos/perfetto/trace/ftrace/ext4_mark_inode_dirty.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mark_inode_dirty.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MarkInodeDirtyFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 ip = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_bitmap_load.proto b/protos/perfetto/trace/ftrace/ext4_mb_bitmap_load.proto
index 471b417..fc2216f 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_bitmap_load.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_bitmap_load.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4MbBitmapLoadFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint32 group = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_buddy_bitmap_load.proto b/protos/perfetto/trace/ftrace/ext4_mb_buddy_bitmap_load.proto
index 4f4286b..11b876b 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_buddy_bitmap_load.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_buddy_bitmap_load.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4MbBuddyBitmapLoadFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint32 group = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_discard_preallocations.proto b/protos/perfetto/trace/ftrace/ext4_mb_discard_preallocations.proto
index 1ff579a..35b6553 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_discard_preallocations.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_discard_preallocations.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4MbDiscardPreallocationsFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 needed = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_new_group_pa.proto b/protos/perfetto/trace/ftrace/ext4_mb_new_group_pa.proto
index fec3b6b..38c7c61 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_new_group_pa.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_new_group_pa.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MbNewGroupPaFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 pa_pstart = 3;
   optional uint64 pa_lstart = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_new_inode_pa.proto b/protos/perfetto/trace/ftrace/ext4_mb_new_inode_pa.proto
index 36dae58..c4b1e60 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_new_inode_pa.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_new_inode_pa.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MbNewInodePaFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 pa_pstart = 3;
   optional uint64 pa_lstart = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_release_group_pa.proto b/protos/perfetto/trace/ftrace/ext4_mb_release_group_pa.proto
index d720fdf..f12af7e 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_release_group_pa.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_release_group_pa.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MbReleaseGroupPaFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 pa_pstart = 2;
   optional uint32 pa_len = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_mb_release_inode_pa.proto b/protos/perfetto/trace/ftrace/ext4_mb_release_inode_pa.proto
index 7601e49..f4e275c 100644
--- a/protos/perfetto/trace/ftrace/ext4_mb_release_inode_pa.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mb_release_inode_pa.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MbReleaseInodePaFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 block = 3;
   optional uint32 count = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mballoc_alloc.proto b/protos/perfetto/trace/ftrace/ext4_mballoc_alloc.proto
index 6218492..863fd30 100644
--- a/protos/perfetto/trace/ftrace/ext4_mballoc_alloc.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mballoc_alloc.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MballocAllocFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 orig_logical = 3;
   optional int32 orig_start = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mballoc_discard.proto b/protos/perfetto/trace/ftrace/ext4_mballoc_discard.proto
index e299416..97d6ef6 100644
--- a/protos/perfetto/trace/ftrace/ext4_mballoc_discard.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mballoc_discard.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MballocDiscardFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 result_start = 3;
   optional uint32 result_group = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mballoc_free.proto b/protos/perfetto/trace/ftrace/ext4_mballoc_free.proto
index 4ce2184..51176b9 100644
--- a/protos/perfetto/trace/ftrace/ext4_mballoc_free.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mballoc_free.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MballocFreeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 result_start = 3;
   optional uint32 result_group = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_mballoc_prealloc.proto b/protos/perfetto/trace/ftrace/ext4_mballoc_prealloc.proto
index 310b940..efd0dd3 100644
--- a/protos/perfetto/trace/ftrace/ext4_mballoc_prealloc.proto
+++ b/protos/perfetto/trace/ftrace/ext4_mballoc_prealloc.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4MballocPreallocFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 orig_logical = 3;
   optional int32 orig_start = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_other_inode_update_time.proto b/protos/perfetto/trace/ftrace/ext4_other_inode_update_time.proto
index ec50a8d..54fc8eb 100644
--- a/protos/perfetto/trace/ftrace/ext4_other_inode_update_time.proto
+++ b/protos/perfetto/trace/ftrace/ext4_other_inode_update_time.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4OtherInodeUpdateTimeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 orig_ino = 3;
   optional uint32 uid = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_punch_hole.proto b/protos/perfetto/trace/ftrace/ext4_punch_hole.proto
index 9fe0b19..cf14f24 100644
--- a/protos/perfetto/trace/ftrace/ext4_punch_hole.proto
+++ b/protos/perfetto/trace/ftrace/ext4_punch_hole.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4PunchHoleFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 offset = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_read_block_bitmap_load.proto b/protos/perfetto/trace/ftrace/ext4_read_block_bitmap_load.proto
index f31b196..047b90a 100644
--- a/protos/perfetto/trace/ftrace/ext4_read_block_bitmap_load.proto
+++ b/protos/perfetto/trace/ftrace/ext4_read_block_bitmap_load.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4ReadBlockBitmapLoadFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint32 group = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_readpage.proto b/protos/perfetto/trace/ftrace/ext4_readpage.proto
index 2a80964..5498ad2 100644
--- a/protos/perfetto/trace/ftrace/ext4_readpage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_readpage.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ReadpageFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 index = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_releasepage.proto b/protos/perfetto/trace/ftrace/ext4_releasepage.proto
index 63039b9..a3db3a4 100644
--- a/protos/perfetto/trace/ftrace/ext4_releasepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_releasepage.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ReleasepageFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 index = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_remove_blocks.proto b/protos/perfetto/trace/ftrace/ext4_remove_blocks.proto
index 3eef63f..cce1830 100644
--- a/protos/perfetto/trace/ftrace/ext4_remove_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_remove_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4RemoveBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 from = 3;
   optional uint32 to = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_request_blocks.proto b/protos/perfetto/trace/ftrace/ext4_request_blocks.proto
index 19044d8..1df9c3c 100644
--- a/protos/perfetto/trace/ftrace/ext4_request_blocks.proto
+++ b/protos/perfetto/trace/ftrace/ext4_request_blocks.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4RequestBlocksFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint32 len = 3;
   optional uint32 logical = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_request_inode.proto b/protos/perfetto/trace/ftrace/ext4_request_inode.proto
index 5bf9b35..b3fd925 100644
--- a/protos/perfetto/trace/ftrace/ext4_request_inode.proto
+++ b/protos/perfetto/trace/ftrace/ext4_request_inode.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4RequestInodeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 dir = 2;
   optional uint32 mode = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto b/protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto
index 6a26f79..1975531 100644
--- a/protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_sync_file_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4SyncFileEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 parent = 3;
   optional int32 datasync = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto b/protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto
index 71c49c6..dcc4c25 100644
--- a/protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_sync_file_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4SyncFileExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 ret = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_sync_fs.proto b/protos/perfetto/trace/ftrace/ext4_sync_fs.proto
index be5ce76..fcec0cf 100644
--- a/protos/perfetto/trace/ftrace/ext4_sync_fs.proto
+++ b/protos/perfetto/trace/ftrace/ext4_sync_fs.proto
@@ -7,6 +7,6 @@
 package perfetto.protos;
 
 message Ext4SyncFsFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional int32 wait = 2;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_truncate_enter.proto b/protos/perfetto/trace/ftrace/ext4_truncate_enter.proto
index 305aeac..cb2acce 100644
--- a/protos/perfetto/trace/ftrace/ext4_truncate_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_truncate_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4TruncateEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 blocks = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_truncate_exit.proto b/protos/perfetto/trace/ftrace/ext4_truncate_exit.proto
index 37c7ede..ed55ef4 100644
--- a/protos/perfetto/trace/ftrace/ext4_truncate_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_truncate_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4TruncateExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 blocks = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_unlink_enter.proto b/protos/perfetto/trace/ftrace/ext4_unlink_enter.proto
index 408db09..615df11 100644
--- a/protos/perfetto/trace/ftrace/ext4_unlink_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_unlink_enter.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4UnlinkEnterFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 parent = 3;
   optional int64 size = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_unlink_exit.proto b/protos/perfetto/trace/ftrace/ext4_unlink_exit.proto
index e9538aa..dd80e23 100644
--- a/protos/perfetto/trace/ftrace/ext4_unlink_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_unlink_exit.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4UnlinkExitFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 ret = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_write_begin.proto b/protos/perfetto/trace/ftrace/ext4_write_begin.proto
index 1a63dd4..3473060 100644
--- a/protos/perfetto/trace/ftrace/ext4_write_begin.proto
+++ b/protos/perfetto/trace/ftrace/ext4_write_begin.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4WriteBeginFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_write_end.proto b/protos/perfetto/trace/ftrace/ext4_write_end.proto
index b34805f..f8c8388 100644
--- a/protos/perfetto/trace/ftrace/ext4_write_end.proto
+++ b/protos/perfetto/trace/ftrace/ext4_write_end.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4WriteEndFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 pos = 3;
   optional uint32 len = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_writepage.proto b/protos/perfetto/trace/ftrace/ext4_writepage.proto
index ae79ba5..6c4b854 100644
--- a/protos/perfetto/trace/ftrace/ext4_writepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_writepage.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4WritepageFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional uint64 index = 3;
 }
diff --git a/protos/perfetto/trace/ftrace/ext4_writepages.proto b/protos/perfetto/trace/ftrace/ext4_writepages.proto
index 870ed70..0b76cb3 100644
--- a/protos/perfetto/trace/ftrace/ext4_writepages.proto
+++ b/protos/perfetto/trace/ftrace/ext4_writepages.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4WritepagesFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 nr_to_write = 3;
   optional int64 pages_skipped = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_writepages_result.proto b/protos/perfetto/trace/ftrace/ext4_writepages_result.proto
index dfefa79..f5d8173 100644
--- a/protos/perfetto/trace/ftrace/ext4_writepages_result.proto
+++ b/protos/perfetto/trace/ftrace/ext4_writepages_result.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4WritepagesResultFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int32 ret = 3;
   optional int32 pages_written = 4;
diff --git a/protos/perfetto/trace/ftrace/ext4_zero_range.proto b/protos/perfetto/trace/ftrace/ext4_zero_range.proto
index 904b7cb..e064c62 100644
--- a/protos/perfetto/trace/ftrace/ext4_zero_range.proto
+++ b/protos/perfetto/trace/ftrace/ext4_zero_range.proto
@@ -7,7 +7,7 @@
 package perfetto.protos;
 
 message Ext4ZeroRangeFtraceEvent {
-  optional uint32 dev = 1;
+  optional uint64 dev = 1;
   optional uint64 ino = 2;
   optional int64 offset = 3;
   optional int64 len = 4;
diff --git a/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto b/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
index 3bab542..3399623 100644
--- a/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
+++ b/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
@@ -10,5 +10,5 @@
   optional uint64 pfn = 1;
   optional uint64 i_ino = 2;
   optional uint64 index = 3;
-  optional uint32 s_dev = 4;
+  optional uint64 s_dev = 4;
 }
diff --git a/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto b/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
index 24f798b..9a49483 100644
--- a/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
+++ b/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
@@ -10,5 +10,5 @@
   optional uint64 pfn = 1;
   optional uint64 i_ino = 2;
   optional uint64 index = 3;
-  optional uint32 s_dev = 4;
+  optional uint64 s_dev = 4;
 }
diff --git a/protos/perfetto/trace/ps/process_tree.proto b/protos/perfetto/trace/ps/process_tree.proto
index 406209c..c1538fe 100644
--- a/protos/perfetto/trace/ps/process_tree.proto
+++ b/protos/perfetto/trace/ps/process_tree.proto
@@ -28,7 +28,7 @@
     optional string name = 2;
   }
 
-  // Representation of a processs.
+  // Representation of a process.
   message Process {
     // The UNIX process ID, aka thread group ID (as per getpid()).
     optional int32 pid = 1;
diff --git a/src/ftrace_reader/cpu_reader.cc b/src/ftrace_reader/cpu_reader.cc
index 6eadb3e..0a270cf 100644
--- a/src/ftrace_reader/cpu_reader.cc
+++ b/src/ftrace_reader/cpu_reader.cc
@@ -488,8 +488,11 @@
     case kPid32ToInt32:
       ReadPid(field_start, field_id, message, metadata);
       return true;
-    case kDevId32ToUint32:
-      ReadDevId(field_start, field_id, message, metadata);
+    case kDevId32ToUint64:
+      ReadDevId<uint32_t>(field_start, field_id, message, metadata);
+      return true;
+    case kDevId64ToUint64:
+      ReadDevId<uint64_t>(field_start, field_id, message, metadata);
       return true;
   }
   // Not reached, for gcc.
diff --git a/src/ftrace_reader/cpu_reader.h b/src/ftrace_reader/cpu_reader.h
index 0a4fe87..53cb89d 100644
--- a/src/ftrace_reader/cpu_reader.h
+++ b/src/ftrace_reader/cpu_reader.h
@@ -20,6 +20,7 @@
 #include <stdint.h>
 #include <string.h>
 
+#include <sys/sysmacros.h>
 #include <array>
 #include <memory>
 #include <set>
@@ -30,6 +31,7 @@
 #include "perfetto/base/thread_checker.h"
 #include "perfetto/ftrace_reader/ftrace_controller.h"
 #include "perfetto/protozero/message.h"
+#include "perfetto/traced/data_source_types.h"
 #include "src/ftrace_reader/proto_translation_table.h"
 
 namespace perfetto {
@@ -115,15 +117,19 @@
                         protozero::Message* out,
                         FtraceMetadata* metadata) {
     T t = ReadIntoVarInt<T>(start, field_id, out);
-    metadata->AddInode(t);
+    metadata->AddInode(static_cast<Inode>(t));
   }
 
+  template <typename T>
   static void ReadDevId(const uint8_t* start,
                         size_t field_id,
                         protozero::Message* out,
                         FtraceMetadata* metadata) {
-    uint32_t dev_id = ReadIntoVarInt<uint32_t>(start, field_id, out);
-    PERFETTO_DCHECK(dev_id != 0);
+    T t;
+    memcpy(&t, reinterpret_cast<const void*>(start), sizeof(T));
+    BlockDeviceID dev_id = TranslateBlockDeviceIDToUserspace<T>(t);
+    out->AppendVarInt<BlockDeviceID>(field_id, dev_id);
+    PERFETTO_DCHECK(t != 0);
     metadata->AddDevice(dev_id);
   }
 
@@ -135,6 +141,22 @@
     metadata->AddPid(pid);
   }
 
+  // Internally the kernel stores device ids in a different layout to that
+  // exposed to userspace via stat etc. There's no userspace function to convert
+  // between the formats so we have to do it ourselves.
+  template <typename T>
+  static BlockDeviceID TranslateBlockDeviceIDToUserspace(T kernel_dev) {
+    // Provided search index s_dev from
+    // https://github.com/torvalds/linux/blob/v4.12/include/linux/fs.h#L404
+    // Convert to user space id using
+    // https://github.com/torvalds/linux/blob/v4.12/include/linux/kdev_t.h#L10
+    // TODO(azappone): see if this is the same on all platforms
+    unsigned int maj = static_cast<unsigned int>((kernel_dev) >> 20);
+    unsigned int min =
+        static_cast<unsigned int>((kernel_dev) & ((1U << 20) - 1));
+    return static_cast<BlockDeviceID>(makedev(maj, min));
+  }
+
   // Iterate through every file in the current directory and check if the inode
   // number of each file matches any of the inode numbers saved in events.
   // Returns map of inode number to filename for every inode number that is
diff --git a/src/ftrace_reader/cpu_reader_unittest.cc b/src/ftrace_reader/cpu_reader_unittest.cc
index 300c97f..8ed33ba 100644
--- a/src/ftrace_reader/cpu_reader_unittest.cc
+++ b/src/ftrace_reader/cpu_reader_unittest.cc
@@ -713,14 +713,14 @@
     event->proto_field_id = 42;
     event->ftrace_event_id = ftrace_event_id;
     {
-      // dev32 -> uint32
+      // dev32 -> uint64
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->ftrace_offset = 8;
       field->ftrace_size = 4;
       field->ftrace_type = kFtraceDevId32;
       field->proto_field_id = 1;
-      field->proto_field_type = kProtoUint32;
+      field->proto_field_type = kProtoUint64;
       SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
                              &field->strategy);
     }
@@ -761,11 +761,23 @@
                              &field->strategy);
     }
     {
-      // ino_t (64bit) -> uint64
+      // dev64 -> uint64
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->ftrace_offset = 24;
       field->ftrace_size = 8;
+      field->ftrace_type = kFtraceDevId64;
+      field->proto_field_id = 6;
+      field->proto_field_type = kProtoUint64;
+      SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
+                             &field->strategy);
+    }
+    {
+      // ino_t (64bit) -> uint64
+      event->fields.emplace_back(Field{});
+      Field* field = &event->fields.back();
+      field->ftrace_offset = 32;
+      field->ftrace_size = 8;
       field->ftrace_type = kFtraceInode64;
       field->proto_field_id = 4;
       field->proto_field_type = kProtoUint64;
@@ -776,7 +788,7 @@
       // char[16] -> string
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
-      field->ftrace_offset = 32;
+      field->ftrace_offset = 40;
       field->ftrace_size = 16;
       field->ftrace_type = kFtraceFixedCString;
       field->proto_field_id = 500;
@@ -788,7 +800,7 @@
       // char -> string
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
-      field->ftrace_offset = 48;
+      field->ftrace_offset = 56;
       field->ftrace_size = 0;
       field->ftrace_type = kFtraceCString;
       field->proto_field_id = 501;
@@ -802,13 +814,26 @@
   FakeEventProvider provider(base::kPageSize);
 
   BinaryWriter writer;
+
+  // Must use the bit masks to translate between kernel and userspace device ids
+  // to generate the below examples
+  const uint32_t example_32_bit_kdev = 271581216;
+  const uint64_t example_32_bit_userspace_dev =
+      CpuReader::TranslateBlockDeviceIDToUserspace<uint32_t>(
+          example_32_bit_kdev);
+  const uint64_t example_64_bit_kdev = 4442450946;
+  const uint64_t example_64_bit_userspace_dev =
+      CpuReader::TranslateBlockDeviceIDToUserspace<uint64_t>(
+          example_64_bit_kdev);
+
   writer.Write<int32_t>(1001);  // Common field.
   writer.Write<int32_t>(9999);  // A gap we shouldn't read.
-  writer.Write<int32_t>(1002);  // Dev id
+  writer.Write<int32_t>(example_32_bit_kdev);  // Dev id
   writer.Write<int32_t>(97);    // Pid
   writer.Write<int32_t>(1003);  // Uint32 field
-  writer.Write<int32_t>(98);    // Inode 1
-  writer.Write<int64_t>(99);    // Inode 2
+  writer.Write<int32_t>(98);    // Inode 32
+  writer.Write<int64_t>(example_64_bit_kdev);  // Dev id 64
+  writer.Write<int64_t>(99u);                  // Inode 64
   writer.WriteFixedString(16, "Hello");
   writer.WriteFixedString(300, "Goodbye");
 
@@ -824,17 +849,114 @@
   ASSERT_TRUE(event);
   EXPECT_EQ(event->common_field(), 1001ul);
   EXPECT_EQ(event->event_case(), FakeFtraceEvent::kAllFields);
-  EXPECT_EQ(event->all_fields().field_dev(), 1002ul);
+  EXPECT_EQ(event->all_fields().field_dev_32(), example_32_bit_userspace_dev);
   EXPECT_EQ(event->all_fields().field_pid(), 97);
   EXPECT_EQ(event->all_fields().field_uint32(), 1003u);
   EXPECT_EQ(event->all_fields().field_inode_32(), 98u);
+  EXPECT_EQ(event->all_fields().field_dev_64(), example_64_bit_userspace_dev);
   EXPECT_EQ(event->all_fields().field_inode_64(), 99u);
   EXPECT_EQ(event->all_fields().field_char_16(), "Hello");
   EXPECT_EQ(event->all_fields().field_char(), "Goodbye");
   EXPECT_THAT(metadata.pids, Contains(97));
-  EXPECT_EQ(metadata.inodes.size(), 2U);
-  EXPECT_THAT(metadata.inodes, Contains(Pair(98u, 1002)));
-  EXPECT_THAT(metadata.inodes, Contains(Pair(99u, 1002ul)));
+  EXPECT_THAT(metadata.last_seen_device_id, example_64_bit_userspace_dev);
+  EXPECT_EQ(metadata.inode_and_device.size(), 2U);
+  EXPECT_THAT(metadata.inode_and_device,
+              Contains(Pair(98u, example_32_bit_userspace_dev)));
+  EXPECT_THAT(metadata.inode_and_device,
+              Contains(Pair(99u, example_64_bit_userspace_dev)));
+}
+
+TEST(CpuReaderTest, TranslateBlockDeviceIDToUserspace) {
+  using FakeEventProvider =
+      ProtoProvider<pbzero::FakeFtraceEvent, FakeFtraceEvent>;
+
+  uint16_t ftrace_event_id = 102;
+
+  std::vector<Field> common_fields;
+  {
+    common_fields.emplace_back(Field{});
+    Field* field = &common_fields.back();
+    field->ftrace_offset = 0;
+    field->ftrace_size = 4;
+    field->ftrace_type = kFtraceUint32;
+    field->proto_field_id = 1;
+    field->proto_field_type = kProtoUint32;
+    SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
+                           &field->strategy);
+  }
+
+  std::vector<Event> events;
+  {
+    events.emplace_back(Event{});
+    Event* event = &events.back();
+    event->name = "";
+    event->group = "";
+    event->proto_field_id = 42;
+    event->ftrace_event_id = ftrace_event_id;
+    {
+      // dev32 -> uint64
+      event->fields.emplace_back(Field{});
+      Field* field = &event->fields.back();
+      field->ftrace_offset = 8;
+      field->ftrace_size = 4;
+      field->ftrace_type = kFtraceDevId32;
+      field->proto_field_id = 1;
+      field->proto_field_type = kProtoUint64;
+      SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
+                             &field->strategy);
+    }
+    {
+      // dev64 -> uint64
+      event->fields.emplace_back(Field{});
+      Field* field = &event->fields.back();
+      field->ftrace_offset = 12;
+      field->ftrace_size = 8;
+      field->ftrace_type = kFtraceDevId64;
+      field->proto_field_id = 6;
+      field->proto_field_type = kProtoUint64;
+      SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
+                             &field->strategy);
+    }
+  }
+  ProtoTranslationTable table(events, std::move(common_fields));
+
+  FakeEventProvider provider(base::kPageSize);
+
+  BinaryWriter writer;
+
+  const uint32_t example_32_bit_kdev = 271581216;
+  const uint64_t example_32_bit_userspace_dev = 66336;
+  // Test downcasting
+  const uint64_t example_64_bit_kdev = 4442450946;
+  const uint64_t example_64_bit_userspace_dev = 17594983681026;
+
+  writer.Write<int32_t>(1001);                 // Common field.
+  writer.Write<int32_t>(9999);                 // A gap we shouldn't read.
+  writer.Write<int32_t>(example_32_bit_kdev);  // Dev id 32
+  writer.Write<int64_t>(example_64_bit_kdev);  // Dev id 64
+
+  auto input = writer.GetCopy();
+  auto length = writer.written();
+  FtraceMetadata metadata{};
+
+  ASSERT_TRUE(CpuReader::ParseEvent(ftrace_event_id, input.get(),
+                                    input.get() + length, &table,
+                                    provider.writer(), &metadata));
+
+  auto event = provider.ParseProto();
+  ASSERT_TRUE(event);
+  EXPECT_EQ(event->common_field(), 1001ul);
+  EXPECT_EQ(event->event_case(), FakeFtraceEvent::kAllFields);
+  EXPECT_EQ(event->all_fields().field_dev_32(), example_32_bit_userspace_dev);
+  EXPECT_EQ(event->all_fields().field_dev_64(), example_64_bit_userspace_dev);
+  EXPECT_THAT(metadata.last_seen_device_id, example_64_bit_userspace_dev);
+
+  EXPECT_THAT(CpuReader::TranslateBlockDeviceIDToUserspace<uint32_t>(
+                  example_32_bit_kdev),
+              example_32_bit_userspace_dev);
+  EXPECT_THAT(CpuReader::TranslateBlockDeviceIDToUserspace<uint64_t>(
+                  example_64_bit_kdev),
+              example_64_bit_userspace_dev);
 }
 
 // clang-format off
diff --git a/src/ftrace_reader/event_info.cc b/src/ftrace_reader/event_info.cc
index 586e8fe..197c7bf 100644
--- a/src/ftrace_reader/event_info.cc
+++ b/src/ftrace_reader/event_info.cc
@@ -79,7 +79,7 @@
     event->name = "block_bio_backmerge";
     event->group = "block";
     event->proto_field_id = 115;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -92,7 +92,7 @@
     event->name = "block_bio_bounce";
     event->group = "block";
     event->proto_field_id = 116;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -105,7 +105,7 @@
     event->name = "block_bio_complete";
     event->group = "block";
     event->proto_field_id = 117;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("error", 4, kProtoInt32));
@@ -118,7 +118,7 @@
     event->name = "block_bio_frontmerge";
     event->group = "block";
     event->proto_field_id = 118;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -131,7 +131,7 @@
     event->name = "block_bio_queue";
     event->group = "block";
     event->proto_field_id = 119;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -144,10 +144,10 @@
     event->name = "block_bio_remap";
     event->group = "block";
     event->proto_field_id = 120;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("old_dev", 4, kProtoUint32));
+    event->fields.push_back(MakeField("old_dev", 4, kProtoUint64));
     event->fields.push_back(MakeField("old_sector", 5, kProtoUint64));
     event->fields.push_back(MakeField("rwbs", 6, kProtoString));
   }
@@ -158,7 +158,7 @@
     event->name = "block_dirty_buffer";
     event->group = "block";
     event->proto_field_id = 121;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("size", 3, kProtoUint64));
   }
@@ -169,7 +169,7 @@
     event->name = "block_getrq";
     event->group = "block";
     event->proto_field_id = 122;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -191,7 +191,7 @@
     event->name = "block_rq_abort";
     event->group = "block";
     event->proto_field_id = 124;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("errors", 4, kProtoInt32));
@@ -205,7 +205,7 @@
     event->name = "block_rq_complete";
     event->group = "block";
     event->proto_field_id = 125;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("errors", 4, kProtoInt32));
@@ -219,7 +219,7 @@
     event->name = "block_rq_insert";
     event->group = "block";
     event->proto_field_id = 126;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
@@ -234,7 +234,7 @@
     event->name = "block_rq_issue";
     event->group = "block";
     event->proto_field_id = 45;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
@@ -249,10 +249,10 @@
     event->name = "block_rq_remap";
     event->group = "block";
     event->proto_field_id = 128;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("old_dev", 4, kProtoUint32));
+    event->fields.push_back(MakeField("old_dev", 4, kProtoUint64));
     event->fields.push_back(MakeField("old_sector", 5, kProtoUint64));
     event->fields.push_back(MakeField("nr_bios", 6, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 7, kProtoString));
@@ -264,7 +264,7 @@
     event->name = "block_rq_requeue";
     event->group = "block";
     event->proto_field_id = 129;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("errors", 4, kProtoInt32));
@@ -278,7 +278,7 @@
     event->name = "block_sleeprq";
     event->group = "block";
     event->proto_field_id = 130;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -291,7 +291,7 @@
     event->name = "block_split";
     event->group = "block";
     event->proto_field_id = 131;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("new_sector", 3, kProtoUint64));
     event->fields.push_back(MakeField("rwbs", 4, kProtoString));
@@ -304,7 +304,7 @@
     event->name = "block_touch_buffer";
     event->group = "block";
     event->proto_field_id = 132;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("sector", 2, kProtoUint64));
     event->fields.push_back(MakeField("size", 3, kProtoUint64));
   }
@@ -665,7 +665,7 @@
     event->name = "ext4_alloc_da_blocks";
     event->group = "ext4";
     event->proto_field_id = 134;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("data_blocks", 3, kProtoUint32));
     event->fields.push_back(MakeField("meta_blocks", 4, kProtoUint32));
@@ -677,7 +677,7 @@
     event->name = "ext4_allocate_blocks";
     event->group = "ext4";
     event->proto_field_id = 135;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("block", 3, kProtoUint64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -696,7 +696,7 @@
     event->name = "ext4_allocate_inode";
     event->group = "ext4";
     event->proto_field_id = 136;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("dir", 3, kProtoUint64));
     event->fields.push_back(MakeField("mode", 4, kProtoUint32));
@@ -708,7 +708,7 @@
     event->name = "ext4_begin_ordered_truncate";
     event->group = "ext4";
     event->proto_field_id = 137;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("new_size", 3, kProtoInt64));
   }
@@ -719,7 +719,7 @@
     event->name = "ext4_collapse_range";
     event->group = "ext4";
     event->proto_field_id = 138;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("offset", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -731,7 +731,7 @@
     event->name = "ext4_da_release_space";
     event->group = "ext4";
     event->proto_field_id = 139;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
     event->fields.push_back(MakeField("freed_blocks", 4, kProtoInt32));
@@ -747,7 +747,7 @@
     event->name = "ext4_da_reserve_space";
     event->group = "ext4";
     event->proto_field_id = 140;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
     event->fields.push_back(MakeField("reserved_data_blocks", 4, kProtoInt32));
@@ -761,7 +761,7 @@
     event->name = "ext4_da_update_reserve_space";
     event->group = "ext4";
     event->proto_field_id = 141;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
     event->fields.push_back(MakeField("used_blocks", 4, kProtoInt32));
@@ -778,7 +778,7 @@
     event->name = "ext4_da_write_begin";
     event->group = "ext4";
     event->proto_field_id = 41;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -791,7 +791,7 @@
     event->name = "ext4_da_write_end";
     event->group = "ext4";
     event->proto_field_id = 42;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -804,7 +804,7 @@
     event->name = "ext4_da_write_pages";
     event->group = "ext4";
     event->proto_field_id = 142;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("first_page", 3, kProtoUint64));
     event->fields.push_back(MakeField("nr_to_write", 4, kProtoInt64));
@@ -817,7 +817,7 @@
     event->name = "ext4_da_write_pages_extent";
     event->group = "ext4";
     event->proto_field_id = 143;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -830,7 +830,7 @@
     event->name = "ext4_direct_IO_enter";
     event->group = "ext4";
     event->proto_field_id = 144;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint64));
@@ -843,7 +843,7 @@
     event->name = "ext4_direct_IO_exit";
     event->group = "ext4";
     event->proto_field_id = 145;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint64));
@@ -857,7 +857,7 @@
     event->name = "ext4_discard_blocks";
     event->group = "ext4";
     event->proto_field_id = 146;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("blk", 2, kProtoUint64));
     event->fields.push_back(MakeField("count", 3, kProtoUint64));
   }
@@ -868,7 +868,7 @@
     event->name = "ext4_discard_preallocations";
     event->group = "ext4";
     event->proto_field_id = 147;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
   }
 
@@ -878,7 +878,7 @@
     event->name = "ext4_drop_inode";
     event->group = "ext4";
     event->proto_field_id = 148;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("drop", 3, kProtoInt32));
   }
@@ -889,7 +889,7 @@
     event->name = "ext4_es_cache_extent";
     event->group = "ext4";
     event->proto_field_id = 149;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -903,7 +903,7 @@
     event->name = "ext4_es_find_delayed_extent_range_enter";
     event->group = "ext4";
     event->proto_field_id = 150;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
   }
@@ -914,7 +914,7 @@
     event->name = "ext4_es_find_delayed_extent_range_exit";
     event->group = "ext4";
     event->proto_field_id = 151;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -928,7 +928,7 @@
     event->name = "ext4_es_insert_extent";
     event->group = "ext4";
     event->proto_field_id = 152;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -942,7 +942,7 @@
     event->name = "ext4_es_lookup_extent_enter";
     event->group = "ext4";
     event->proto_field_id = 153;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
   }
@@ -953,7 +953,7 @@
     event->name = "ext4_es_lookup_extent_exit";
     event->group = "ext4";
     event->proto_field_id = 154;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -968,7 +968,7 @@
     event->name = "ext4_es_remove_extent";
     event->group = "ext4";
     event->proto_field_id = 155;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -980,7 +980,7 @@
     event->name = "ext4_es_shrink";
     event->group = "ext4";
     event->proto_field_id = 156;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("nr_shrunk", 2, kProtoInt32));
     event->fields.push_back(MakeField("scan_time", 3, kProtoUint64));
     event->fields.push_back(MakeField("nr_skipped", 4, kProtoInt32));
@@ -993,7 +993,7 @@
     event->name = "ext4_es_shrink_count";
     event->group = "ext4";
     event->proto_field_id = 157;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("nr_to_scan", 2, kProtoInt32));
     event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
   }
@@ -1004,7 +1004,7 @@
     event->name = "ext4_es_shrink_scan_enter";
     event->group = "ext4";
     event->proto_field_id = 158;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("nr_to_scan", 2, kProtoInt32));
     event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
   }
@@ -1015,7 +1015,7 @@
     event->name = "ext4_es_shrink_scan_exit";
     event->group = "ext4";
     event->proto_field_id = 159;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("nr_shrunk", 2, kProtoInt32));
     event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
   }
@@ -1026,7 +1026,7 @@
     event->name = "ext4_evict_inode";
     event->group = "ext4";
     event->proto_field_id = 160;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("nlink", 3, kProtoInt32));
   }
@@ -1037,7 +1037,7 @@
     event->name = "ext4_ext_convert_to_initialized_enter";
     event->group = "ext4";
     event->proto_field_id = 161;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("m_lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("m_len", 4, kProtoUint32));
@@ -1052,7 +1052,7 @@
     event->name = "ext4_ext_convert_to_initialized_fastpath";
     event->group = "ext4";
     event->proto_field_id = 162;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("m_lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("m_len", 4, kProtoUint32));
@@ -1070,7 +1070,7 @@
     event->name = "ext4_ext_handle_unwritten_extents";
     event->group = "ext4";
     event->proto_field_id = 163;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("flags", 3, kProtoInt32));
     event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
@@ -1086,7 +1086,7 @@
     event->name = "ext4_ext_in_cache";
     event->group = "ext4";
     event->proto_field_id = 164;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("ret", 4, kProtoInt32));
@@ -1098,7 +1098,7 @@
     event->name = "ext4_ext_load_extent";
     event->group = "ext4";
     event->proto_field_id = 165;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
@@ -1110,7 +1110,7 @@
     event->name = "ext4_ext_map_blocks_enter";
     event->group = "ext4";
     event->proto_field_id = 166;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1123,7 +1123,7 @@
     event->name = "ext4_ext_map_blocks_exit";
     event->group = "ext4";
     event->proto_field_id = 167;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("flags", 3, kProtoUint32));
     event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
@@ -1139,7 +1139,7 @@
     event->name = "ext4_ext_put_in_cache";
     event->group = "ext4";
     event->proto_field_id = 168;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1152,7 +1152,7 @@
     event->name = "ext4_ext_remove_space";
     event->group = "ext4";
     event->proto_field_id = 169;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("start", 3, kProtoUint32));
     event->fields.push_back(MakeField("end", 4, kProtoUint32));
@@ -1165,7 +1165,7 @@
     event->name = "ext4_ext_remove_space_done";
     event->group = "ext4";
     event->proto_field_id = 170;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("start", 3, kProtoUint32));
     event->fields.push_back(MakeField("end", 4, kProtoUint32));
@@ -1180,7 +1180,7 @@
     event->name = "ext4_ext_rm_idx";
     event->group = "ext4";
     event->proto_field_id = 171;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
   }
@@ -1191,7 +1191,7 @@
     event->name = "ext4_ext_rm_leaf";
     event->group = "ext4";
     event->proto_field_id = 172;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("partial", 3, kProtoInt64));
     event->fields.push_back(MakeField("start", 4, kProtoUint32));
@@ -1206,7 +1206,7 @@
     event->name = "ext4_ext_show_extent";
     event->group = "ext4";
     event->proto_field_id = 173;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
@@ -1219,7 +1219,7 @@
     event->name = "ext4_fallocate_enter";
     event->group = "ext4";
     event->proto_field_id = 174;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("offset", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -1232,7 +1232,7 @@
     event->name = "ext4_fallocate_exit";
     event->group = "ext4";
     event->proto_field_id = 175;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("blocks", 4, kProtoUint32));
@@ -1245,7 +1245,7 @@
     event->name = "ext4_find_delalloc_range";
     event->group = "ext4";
     event->proto_field_id = 176;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("from", 3, kProtoUint32));
     event->fields.push_back(MakeField("to", 4, kProtoUint32));
@@ -1260,7 +1260,7 @@
     event->name = "ext4_forget";
     event->group = "ext4";
     event->proto_field_id = 177;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("block", 3, kProtoUint64));
     event->fields.push_back(MakeField("is_metadata", 4, kProtoInt32));
@@ -1273,7 +1273,7 @@
     event->name = "ext4_free_blocks";
     event->group = "ext4";
     event->proto_field_id = 178;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("block", 3, kProtoUint64));
     event->fields.push_back(MakeField("count", 4, kProtoUint64));
@@ -1287,7 +1287,7 @@
     event->name = "ext4_free_inode";
     event->group = "ext4";
     event->proto_field_id = 179;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("uid", 3, kProtoUint32));
     event->fields.push_back(MakeField("gid", 4, kProtoUint32));
@@ -1301,7 +1301,7 @@
     event->name = "ext4_get_implied_cluster_alloc_exit";
     event->group = "ext4";
     event->proto_field_id = 180;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("flags", 2, kProtoUint32));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
@@ -1315,7 +1315,7 @@
     event->name = "ext4_get_reserved_cluster_alloc";
     event->group = "ext4";
     event->proto_field_id = 181;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1327,7 +1327,7 @@
     event->name = "ext4_ind_map_blocks_enter";
     event->group = "ext4";
     event->proto_field_id = 182;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1340,7 +1340,7 @@
     event->name = "ext4_ind_map_blocks_exit";
     event->group = "ext4";
     event->proto_field_id = 183;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("flags", 3, kProtoUint32));
     event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
@@ -1356,7 +1356,7 @@
     event->name = "ext4_insert_range";
     event->group = "ext4";
     event->proto_field_id = 184;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("offset", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -1368,7 +1368,7 @@
     event->name = "ext4_invalidatepage";
     event->group = "ext4";
     event->proto_field_id = 185;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
     event->fields.push_back(MakeField("offset", 4, kProtoUint32));
@@ -1381,7 +1381,7 @@
     event->name = "ext4_journal_start";
     event->group = "ext4";
     event->proto_field_id = 186;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ip", 2, kProtoUint64));
     event->fields.push_back(MakeField("blocks", 3, kProtoInt32));
     event->fields.push_back(MakeField("rsv_blocks", 4, kProtoInt32));
@@ -1393,7 +1393,7 @@
     event->name = "ext4_journal_start_reserved";
     event->group = "ext4";
     event->proto_field_id = 187;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ip", 2, kProtoUint64));
     event->fields.push_back(MakeField("blocks", 3, kProtoInt32));
   }
@@ -1404,7 +1404,7 @@
     event->name = "ext4_journalled_invalidatepage";
     event->group = "ext4";
     event->proto_field_id = 188;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
     event->fields.push_back(MakeField("offset", 4, kProtoUint32));
@@ -1417,7 +1417,7 @@
     event->name = "ext4_journalled_write_end";
     event->group = "ext4";
     event->proto_field_id = 189;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1430,7 +1430,7 @@
     event->name = "ext4_load_inode";
     event->group = "ext4";
     event->proto_field_id = 190;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
   }
 
@@ -1440,7 +1440,7 @@
     event->name = "ext4_load_inode_bitmap";
     event->group = "ext4";
     event->proto_field_id = 191;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("group", 2, kProtoUint32));
   }
 
@@ -1450,7 +1450,7 @@
     event->name = "ext4_mark_inode_dirty";
     event->group = "ext4";
     event->proto_field_id = 192;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("ip", 3, kProtoUint64));
   }
@@ -1461,7 +1461,7 @@
     event->name = "ext4_mb_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 193;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("group", 2, kProtoUint32));
   }
 
@@ -1471,7 +1471,7 @@
     event->name = "ext4_mb_buddy_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 194;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("group", 2, kProtoUint32));
   }
 
@@ -1481,7 +1481,7 @@
     event->name = "ext4_mb_discard_preallocations";
     event->group = "ext4";
     event->proto_field_id = 195;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("needed", 2, kProtoInt32));
   }
 
@@ -1491,7 +1491,7 @@
     event->name = "ext4_mb_new_group_pa";
     event->group = "ext4";
     event->proto_field_id = 196;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pa_pstart", 3, kProtoUint64));
     event->fields.push_back(MakeField("pa_lstart", 4, kProtoUint64));
@@ -1504,7 +1504,7 @@
     event->name = "ext4_mb_new_inode_pa";
     event->group = "ext4";
     event->proto_field_id = 197;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pa_pstart", 3, kProtoUint64));
     event->fields.push_back(MakeField("pa_lstart", 4, kProtoUint64));
@@ -1517,7 +1517,7 @@
     event->name = "ext4_mb_release_group_pa";
     event->group = "ext4";
     event->proto_field_id = 198;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("pa_pstart", 2, kProtoUint64));
     event->fields.push_back(MakeField("pa_len", 3, kProtoUint32));
   }
@@ -1528,7 +1528,7 @@
     event->name = "ext4_mb_release_inode_pa";
     event->group = "ext4";
     event->proto_field_id = 199;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("block", 3, kProtoUint64));
     event->fields.push_back(MakeField("count", 4, kProtoUint32));
@@ -1540,7 +1540,7 @@
     event->name = "ext4_mballoc_alloc";
     event->group = "ext4";
     event->proto_field_id = 200;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("orig_logical", 3, kProtoUint32));
     event->fields.push_back(MakeField("orig_start", 4, kProtoInt32));
@@ -1568,7 +1568,7 @@
     event->name = "ext4_mballoc_discard";
     event->group = "ext4";
     event->proto_field_id = 201;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("result_start", 3, kProtoInt32));
     event->fields.push_back(MakeField("result_group", 4, kProtoUint32));
@@ -1581,7 +1581,7 @@
     event->name = "ext4_mballoc_free";
     event->group = "ext4";
     event->proto_field_id = 202;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("result_start", 3, kProtoInt32));
     event->fields.push_back(MakeField("result_group", 4, kProtoUint32));
@@ -1594,7 +1594,7 @@
     event->name = "ext4_mballoc_prealloc";
     event->group = "ext4";
     event->proto_field_id = 203;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("orig_logical", 3, kProtoUint32));
     event->fields.push_back(MakeField("orig_start", 4, kProtoInt32));
@@ -1612,7 +1612,7 @@
     event->name = "ext4_other_inode_update_time";
     event->group = "ext4";
     event->proto_field_id = 204;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("orig_ino", 3, kProtoUint64));
     event->fields.push_back(MakeField("uid", 4, kProtoUint32));
@@ -1626,7 +1626,7 @@
     event->name = "ext4_punch_hole";
     event->group = "ext4";
     event->proto_field_id = 205;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("offset", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -1639,7 +1639,7 @@
     event->name = "ext4_read_block_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 206;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("group", 2, kProtoUint32));
   }
 
@@ -1649,7 +1649,7 @@
     event->name = "ext4_readpage";
     event->group = "ext4";
     event->proto_field_id = 207;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
   }
@@ -1660,7 +1660,7 @@
     event->name = "ext4_releasepage";
     event->group = "ext4";
     event->proto_field_id = 208;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
   }
@@ -1671,7 +1671,7 @@
     event->name = "ext4_remove_blocks";
     event->group = "ext4";
     event->proto_field_id = 209;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("from", 3, kProtoUint32));
     event->fields.push_back(MakeField("to", 4, kProtoUint32));
@@ -1687,7 +1687,7 @@
     event->name = "ext4_request_blocks";
     event->group = "ext4";
     event->proto_field_id = 210;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("len", 3, kProtoUint32));
     event->fields.push_back(MakeField("logical", 4, kProtoUint32));
@@ -1705,7 +1705,7 @@
     event->name = "ext4_request_inode";
     event->group = "ext4";
     event->proto_field_id = 211;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("dir", 2, kProtoUint64));
     event->fields.push_back(MakeField("mode", 3, kProtoUint32));
   }
@@ -1716,7 +1716,7 @@
     event->name = "ext4_sync_file_enter";
     event->group = "ext4";
     event->proto_field_id = 43;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("parent", 3, kProtoUint64));
     event->fields.push_back(MakeField("datasync", 4, kProtoInt32));
@@ -1728,7 +1728,7 @@
     event->name = "ext4_sync_file_exit";
     event->group = "ext4";
     event->proto_field_id = 44;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("ret", 3, kProtoInt32));
   }
@@ -1739,7 +1739,7 @@
     event->name = "ext4_sync_fs";
     event->group = "ext4";
     event->proto_field_id = 212;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("wait", 2, kProtoInt32));
   }
 
@@ -1775,7 +1775,7 @@
     event->name = "ext4_truncate_enter";
     event->group = "ext4";
     event->proto_field_id = 215;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("blocks", 3, kProtoUint64));
   }
@@ -1786,7 +1786,7 @@
     event->name = "ext4_truncate_exit";
     event->group = "ext4";
     event->proto_field_id = 216;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("blocks", 3, kProtoUint64));
   }
@@ -1797,7 +1797,7 @@
     event->name = "ext4_unlink_enter";
     event->group = "ext4";
     event->proto_field_id = 217;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("parent", 3, kProtoUint64));
     event->fields.push_back(MakeField("size", 4, kProtoInt64));
@@ -1809,7 +1809,7 @@
     event->name = "ext4_unlink_exit";
     event->group = "ext4";
     event->proto_field_id = 218;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("ret", 3, kProtoInt32));
   }
@@ -1820,7 +1820,7 @@
     event->name = "ext4_write_begin";
     event->group = "ext4";
     event->proto_field_id = 219;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1833,7 +1833,7 @@
     event->name = "ext4_write_end";
     event->group = "ext4";
     event->proto_field_id = 230;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("pos", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoUint32));
@@ -1846,7 +1846,7 @@
     event->name = "ext4_writepage";
     event->group = "ext4";
     event->proto_field_id = 231;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
   }
@@ -1857,7 +1857,7 @@
     event->name = "ext4_writepages";
     event->group = "ext4";
     event->proto_field_id = 232;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("nr_to_write", 3, kProtoInt64));
     event->fields.push_back(MakeField("pages_skipped", 4, kProtoInt64));
@@ -1875,7 +1875,7 @@
     event->name = "ext4_writepages_result";
     event->group = "ext4";
     event->proto_field_id = 233;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("ret", 3, kProtoInt32));
     event->fields.push_back(MakeField("pages_written", 4, kProtoInt32));
@@ -1890,7 +1890,7 @@
     event->name = "ext4_zero_range";
     event->group = "ext4";
     event->proto_field_id = 234;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
     event->fields.push_back(MakeField("ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("offset", 3, kProtoInt64));
     event->fields.push_back(MakeField("len", 4, kProtoInt64));
@@ -1906,7 +1906,7 @@
     event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
     event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("s_dev", 4, kProtoUint32));
+    event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
   }
 
   {
@@ -1918,7 +1918,7 @@
     event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
     event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
     event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("s_dev", 4, kProtoUint32));
+    event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
   }
 
   {
diff --git a/src/ftrace_reader/event_info_constants.cc b/src/ftrace_reader/event_info_constants.cc
index 9de52e8..b5642ef 100644
--- a/src/ftrace_reader/event_info_constants.cc
+++ b/src/ftrace_reader/event_info_constants.cc
@@ -43,8 +43,10 @@
     *out = kInode64ToUint64;
   } else if (ftrace == kFtracePid32 && proto == kProtoInt32) {
     *out = kPid32ToInt32;
-  } else if (ftrace == kFtraceDevId32 && proto == kProtoUint32) {
-    *out = kDevId32ToUint32;
+  } else if (ftrace == kFtraceDevId32 && proto == kProtoUint64) {
+    *out = kDevId32ToUint64;
+  } else if (ftrace == kFtraceDevId64 && proto == kProtoUint64) {
+    *out = kDevId64ToUint64;
   } else if (ftrace == kFtraceUint8 && proto == kProtoUint32) {
     *out = kUint8ToUint32;
   } else if (ftrace == kFtraceUint16 && proto == kProtoUint32) {
diff --git a/src/ftrace_reader/event_info_constants.h b/src/ftrace_reader/event_info_constants.h
index 0d6ac64..e46ab89 100644
--- a/src/ftrace_reader/event_info_constants.h
+++ b/src/ftrace_reader/event_info_constants.h
@@ -61,6 +61,7 @@
   kFtraceInode64,
   kFtracePid32,
   kFtraceDevId32,
+  kFtraceDevId64,
 };
 
 // Joint enum of FtraceFieldType (left) and ProtoFieldType (right).
@@ -84,7 +85,8 @@
   kInode32ToUint64,
   kInode64ToUint64,
   kPid32ToInt32,
-  kDevId32ToUint32,
+  kDevId32ToUint64,
+  kDevId64ToUint64,
 };
 
 inline const char* ToString(ProtoFieldType v) {
@@ -159,6 +161,8 @@
       return "pid32";
     case kFtraceDevId32:
       return "devid32";
+    case kFtraceDevId64:
+      return "devid64";
   }
   // For gcc:
   PERFETTO_CHECK(false);
diff --git a/src/ftrace_reader/event_info_unittest.cc b/src/ftrace_reader/event_info_unittest.cc
index cd5f0c6..773b7b1 100644
--- a/src/ftrace_reader/event_info_unittest.cc
+++ b/src/ftrace_reader/event_info_unittest.cc
@@ -75,8 +75,14 @@
   ASSERT_EQ(strategy, kCStringToString);
   ASSERT_TRUE(SetTranslationStrategy(kFtracePid32, kProtoInt32, &strategy));
   ASSERT_EQ(strategy, kPid32ToInt32);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId32, kProtoUint32, &strategy));
-  ASSERT_EQ(strategy, kDevId32ToUint32);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode32, kProtoUint64, &strategy));
+  ASSERT_EQ(strategy, kInode32ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode64, kProtoUint64, &strategy));
+  ASSERT_EQ(strategy, kInode64ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId32, kProtoUint64, &strategy));
+  ASSERT_EQ(strategy, kDevId32ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId64, kProtoUint64, &strategy));
+  ASSERT_EQ(strategy, kDevId64ToUint64);
 }
 
 }  // namespace
diff --git a/src/ftrace_reader/ftrace_controller.cc b/src/ftrace_reader/ftrace_controller.cc
index cf4c80b..b3259c4 100644
--- a/src/ftrace_reader/ftrace_controller.cc
+++ b/src/ftrace_reader/ftrace_controller.cc
@@ -20,6 +20,7 @@
 #include <stdint.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <sys/sysmacros.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -363,16 +364,16 @@
 
 FtraceMetadata::FtraceMetadata() {
   // A lot of the time there will only be a small number of inodes.
-  inodes.reserve(10);
+  inode_and_device.reserve(10);
   pids.reserve(10);
 }
 
-void FtraceMetadata::AddDevice(uint32_t device_id) {
+void FtraceMetadata::AddDevice(BlockDeviceID device_id) {
   last_seen_device_id = device_id;
 }
 
-void FtraceMetadata::AddInode(uint64_t inode_number) {
-  inodes.push_back(std::make_pair(inode_number, last_seen_device_id));
+void FtraceMetadata::AddInode(Inode inode_number) {
+  inode_and_device.push_back(std::make_pair(inode_number, last_seen_device_id));
 }
 
 void FtraceMetadata::AddPid(int32_t pid) {
@@ -384,7 +385,7 @@
 }
 
 void FtraceMetadata::Clear() {
-  inodes.clear();
+  inode_and_device.clear();
   pids.clear();
   overwrite_count = 0;
   last_seen_device_id = 0;
diff --git a/src/ftrace_reader/ftrace_controller_unittest.cc b/src/ftrace_reader/ftrace_controller_unittest.cc
index 272685f..23128f1 100644
--- a/src/ftrace_reader/ftrace_controller_unittest.cc
+++ b/src/ftrace_reader/ftrace_controller_unittest.cc
@@ -603,12 +603,12 @@
 
 TEST(FtraceMetadataTest, Clear) {
   FtraceMetadata metadata;
-  metadata.inodes.push_back(std::make_pair(1, 1));
+  metadata.inode_and_device.push_back(std::make_pair(1, 1));
   metadata.pids.push_back(2);
   metadata.overwrite_count = 3;
   metadata.last_seen_device_id = 100;
   metadata.Clear();
-  EXPECT_THAT(metadata.inodes, IsEmpty());
+  EXPECT_THAT(metadata.inode_and_device, IsEmpty());
   EXPECT_THAT(metadata.pids, IsEmpty());
   EXPECT_EQ(metadata.overwrite_count, 0u);
   EXPECT_EQ(metadata.last_seen_device_id, 0u);
@@ -630,7 +630,8 @@
   // Check same inode number is added
   metadata.AddDevice(5);
   metadata.AddInode(2);
-  EXPECT_THAT(metadata.inodes, ElementsAre(Pair(2, 3), Pair(1, 3), Pair(2, 5)));
+  EXPECT_THAT(metadata.inode_and_device,
+              ElementsAre(Pair(2, 3), Pair(1, 3), Pair(2, 5)));
 }
 
 TEST(FtraceMetadataTest, AddPid) {
diff --git a/src/ftrace_reader/proto_translation_table.cc b/src/ftrace_reader/proto_translation_table.cc
index 389f251..5cbe75c 100644
--- a/src/ftrace_reader/proto_translation_table.cc
+++ b/src/ftrace_reader/proto_translation_table.cc
@@ -200,6 +200,16 @@
     }
   }
 
+  if (StartsWith(type_and_name, "dev_t ")) {
+    if (size == 4) {
+      *out = kFtraceDevId32;
+      return true;
+    } else if (size == 8) {
+      *out = kFtraceDevId64;
+      return true;
+    }
+  }
+
   // Pids (as in 'sched_switch').
   if (StartsWith(type_and_name, "pid_t ") && size == 4) {
     *out = kFtracePid32;
diff --git a/src/ftrace_reader/proto_translation_table_unittest.cc b/src/ftrace_reader/proto_translation_table_unittest.cc
index 856f113..9e16395 100644
--- a/src/ftrace_reader/proto_translation_table_unittest.cc
+++ b/src/ftrace_reader/proto_translation_table_unittest.cc
@@ -274,6 +274,12 @@
   ASSERT_TRUE(InferFtraceType("ino_t foo", 8, false, &type));
   ASSERT_EQ(type, kFtraceInode64);
 
+  ASSERT_TRUE(InferFtraceType("dev_t foo", 4, false, &type));
+  ASSERT_EQ(type, kFtraceDevId32);
+
+  ASSERT_TRUE(InferFtraceType("dev_t foo", 8, false, &type));
+  ASSERT_EQ(type, kFtraceDevId64);
+
   ASSERT_TRUE(InferFtraceType("pid_t foo", 4, false, &type));
   ASSERT_EQ(type, kFtracePid32);
 
diff --git a/src/ftrace_reader/test/test_messages.proto b/src/ftrace_reader/test/test_messages.proto
index 5f731dd..76de416 100644
--- a/src/ftrace_reader/test/test_messages.proto
+++ b/src/ftrace_reader/test/test_messages.proto
@@ -23,10 +23,11 @@
 }
 
 message FakeAllFieldsFtraceEvent {
-  optional uint32 field_dev = 1;
+  optional uint64 field_dev_32 = 1;
   optional int32 field_pid = 2;
   optional uint32 field_uint32 = 5;
-  optional uint32 field_inode_32 = 3;
+  optional uint64 field_inode_32 = 3;
+  optional uint64 field_dev_64 = 6;
   optional uint64 field_inode_64 = 4;
   optional string field_char_16 = 500;
   optional string field_char = 501;
diff --git a/src/traced/probes/filesystem/fs_mount.h b/src/traced/probes/filesystem/fs_mount.h
index 8d4c49a..2086a80 100644
--- a/src/traced/probes/filesystem/fs_mount.h
+++ b/src/traced/probes/filesystem/fs_mount.h
@@ -21,12 +21,10 @@
 #include <map>
 #include <string>
 #include <vector>
+#include "perfetto/traced/data_source_types.h"
 
 namespace perfetto {
 
-// On ARM, st_dev is not dev_t but unsigned long long.
-using BlockDeviceID = decltype(stat::st_dev);
-
 constexpr char kMountsPath[] = "/proc/mounts";
 
 std::multimap<BlockDeviceID, std::string> ParseMounts(
diff --git a/src/traced/probes/filesystem/inode_file_data_source.cc b/src/traced/probes/filesystem/inode_file_data_source.cc
index 0bdf781..abc1fa0 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.cc
+++ b/src/traced/probes/filesystem/inode_file_data_source.cc
@@ -17,6 +17,7 @@
 #include "src/traced/probes/filesystem/inode_file_data_source.h"
 
 #include <dirent.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
 #include <queue>
@@ -29,17 +30,18 @@
 
 namespace perfetto {
 
-using BlockDeviceID = decltype(stat::st_dev);
-
-void CreateDeviceToInodeMap(
+void ScanFilesDFS(
     const std::string& root_directory,
-    std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>* block_device_map) {
-  std::queue<std::string> queue;
-  queue.push(root_directory);
+    const std::function<void(BlockDeviceID block_device_id,
+                             Inode inode_number,
+                             const std::string& path,
+                             protos::pbzero::InodeFileMap_Entry_Type type)>&
+        fn) {
+  std::vector<std::string> queue{root_directory};
   while (!queue.empty()) {
     struct dirent* entry;
-    std::string filepath = queue.front();
-    queue.pop();
+    std::string filepath = queue.back();
+    queue.pop_back();
     DIR* dir = opendir(filepath.c_str());
     filepath += "/";
     if (dir == nullptr)
@@ -48,82 +50,121 @@
       std::string filename = entry->d_name;
       if (filename == "." || filename == "..")
         continue;
-      Inode inode_number = entry->d_ino;
+
       struct stat buf;
       if (lstat(filepath.c_str(), &buf) != 0)
         continue;
+
+      Inode inode_number = entry->d_ino;
       BlockDeviceID block_device_id = buf.st_dev;
-      std::map<Inode, InodeMapValue>& inode_map =
-          (*block_device_map)[block_device_id];
-      // Default
+
       protos::pbzero::InodeFileMap_Entry_Type type =
           protos::pbzero::InodeFileMap_Entry_Type_UNKNOWN;
       // Readdir and stat not guaranteed to have directory info for all systems
       if (entry->d_type == DT_DIR || S_ISDIR(buf.st_mode)) {
         // Continue iterating through files if current entry is a directory
-        queue.push(filepath + filename);
+        queue.push_back(filepath + filename);
         type = protos::pbzero::InodeFileMap_Entry_Type_DIRECTORY;
       } else if (entry->d_type == DT_REG || S_ISREG(buf.st_mode)) {
         type = protos::pbzero::InodeFileMap_Entry_Type_FILE;
       }
-      inode_map[inode_number].SetType(type);
-      inode_map[inode_number].AddPath(filepath + filename);
+
+      fn(block_device_id, inode_number, filepath + filename, type);
     }
     closedir(dir);
   }
 }
 
+void CreateDeviceToInodeMap(
+    const std::string& root_directory,
+    std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>* block_device_map) {
+  ScanFilesDFS(
+      root_directory,
+      [&block_device_map](BlockDeviceID block_device_id, Inode inode_number,
+                          const std::string& path,
+                          protos::pbzero::InodeFileMap_Entry_Type type) {
+        std::map<Inode, InodeMapValue>& inode_map =
+            (*block_device_map)[block_device_id];
+        inode_map[inode_number].SetType(type);
+        inode_map[inode_number].AddPath(path);
+      });
+}
+
 InodeFileDataSource::InodeFileDataSource(
     TracingSessionID id,
-    std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>* file_system_inodes,
+    std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>*
+        system_partition_files,
     std::unique_ptr<TraceWriter> writer)
     : session_id_(id),
-      file_system_inodes_(file_system_inodes),
+      system_partition_files_(system_partition_files),
       writer_(std::move(writer)),
       weak_factory_(this) {}
 
-void InodeFileDataSource::WriteInodes(
-    const std::vector<std::pair<uint64_t, uint32_t>>& inodes) {
-  PERFETTO_DLOG("Write Inodes start");
+bool InodeFileDataSource::AddInodeFileMapEntry(
+    InodeFileMap* inode_file_map,
+    BlockDeviceID block_device_id,
+    Inode inode_number,
+    const std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>&
+        current_partition_map) {
+  auto block_device_entry = current_partition_map.find(block_device_id);
+  if (block_device_entry != current_partition_map.end()) {
+    auto inode_map = block_device_entry->second.find(inode_number);
+    if (inode_map != block_device_entry->second.end()) {
+      auto* entry = inode_file_map->add_entries();
+      entry->set_inode_number(inode_number);
+      entry->set_type(inode_map->second.type());
+      for (const auto& path : inode_map->second.paths())
+        entry->add_paths(path.c_str());
+      return true;
+    }
+  }
+  return false;
+}
 
+void InodeFileDataSource::OnInodes(
+    const std::vector<std::pair<Inode, BlockDeviceID>>& inodes) {
+  PERFETTO_DLOG("Saw FtraceBundle with %zu inodes.", inodes.size());
   if (mount_points_.empty()) {
     mount_points_ = ParseMounts();
   }
   // Group inodes from FtraceMetadata by block device
   std::map<BlockDeviceID, std::set<Inode>> inode_file_maps;
-  for (const auto& inode : inodes) {
-    BlockDeviceID block_device_id = inode.first;
-    Inode inode_number = inode.second;
+  for (const auto& inodes_pair : inodes) {
+    Inode inode_number = inodes_pair.first;
+    BlockDeviceID block_device_id = inodes_pair.second;
     inode_file_maps[block_device_id].emplace(inode_number);
   }
   // Write a TracePacket with an InodeFileMap proto for each block device id
   for (const auto& inode_file_map_data : inode_file_maps) {
+    BlockDeviceID block_device_id = inode_file_map_data.first;
+    std::set<Inode> inode_numbers = inode_file_map_data.second;
+
+    // New TracePacket for each InodeFileMap
     auto trace_packet = writer_->NewTracePacket();
     auto inode_file_map = trace_packet->set_inode_file_map();
+
     // Add block device id
-    BlockDeviceID block_device_id = inode_file_map_data.first;
     inode_file_map->set_block_device_id(block_device_id);
+
     // Add mount points
     auto range = mount_points_.equal_range(block_device_id);
     for (std::multimap<BlockDeviceID, std::string>::iterator it = range.first;
-         it != range.second; ++it) {
+         it != range.second; ++it)
       inode_file_map->add_mount_points(it->second.c_str());
-    }
-    // Add entries for each inode number
-    std::set<Inode> inode_numbers = inode_file_map_data.second;
+
+    // Add entries for inodes in system
+    std::map<BlockDeviceID, std::set<Inode>> data_partition_inodes;
     for (const auto& inode_number : inode_numbers) {
-      auto* entry = inode_file_map->add_entries();
-      entry->set_inode_number(inode_number);
-      auto block_device_map = file_system_inodes_->find(block_device_id);
-      if (block_device_map != file_system_inodes_->end()) {
-        auto inode_map = block_device_map->second.find(inode_number);
-        if (inode_map != block_device_map->second.end()) {
-          entry->set_type(inode_map->second.type());
-          for (const auto& path : inode_map->second.paths())
-            entry->add_paths(path.c_str());
-        }
+      // Search in /system partition and add to InodeFileMap if found
+      bool in_system =
+          AddInodeFileMapEntry(inode_file_map, block_device_id, inode_number,
+                               *system_partition_files_);
+      if (!in_system) {
+        // TODO(fmayer): Add LRU and check before adding inode for full scan
+        data_partition_inodes[block_device_id].emplace(inode_number);
       }
     }
+
     trace_packet->Finalize();
   }
 }
@@ -132,9 +173,4 @@
   return weak_factory_.GetWeakPtr();
 }
 
-void InodeFileDataSource::OnInodes(
-    const std::vector<std::pair<uint64_t, uint32_t>>& inodes) {
-  PERFETTO_DLOG("Saw FtraceBundle with %zu inodes.", inodes.size());
-}
-
 }  // namespace perfetto
diff --git a/src/traced/probes/filesystem/inode_file_data_source.h b/src/traced/probes/filesystem/inode_file_data_source.h
index 889b936..8120200 100644
--- a/src/traced/probes/filesystem/inode_file_data_source.h
+++ b/src/traced/probes/filesystem/inode_file_data_source.h
@@ -25,6 +25,7 @@
 #include <string>
 
 #include "perfetto/base/weak_ptr.h"
+#include "perfetto/traced/data_source_types.h"
 #include "perfetto/tracing/core/basic_types.h"
 #include "perfetto/tracing/core/trace_writer.h"
 #include "src/traced/probes/filesystem/fs_mount.h"
@@ -33,7 +34,6 @@
 
 namespace perfetto {
 
-using Inode = uint64_t;
 using InodeFileMap = protos::pbzero::InodeFileMap;
 class TraceWriter;
 
@@ -52,6 +52,13 @@
   std::set<std::string> paths_;
 };
 
+void ScanFilesDFS(
+    const std::string& root_directory,
+    const std::function<void(BlockDeviceID block_device_id,
+                             Inode inode_number,
+                             const std::string& path,
+                             protos::pbzero::InodeFileMap_Entry_Type type)>&);
+
 void CreateDeviceToInodeMap(
     const std::string& root_directory,
     std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>* block_device_map);
@@ -60,19 +67,25 @@
  public:
   InodeFileDataSource(TracingSessionID,
                       std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>*
-                          file_system_inodes,
+                          system_partition_files,
                       std::unique_ptr<TraceWriter> writer);
 
   TracingSessionID session_id() const { return session_id_; }
   base::WeakPtr<InodeFileDataSource> GetWeakPtr() const;
 
-  void WriteInodes(const std::vector<std::pair<uint64_t, uint32_t>>&);
-  // TODO(hjd): Combine with above.
-  void OnInodes(const std::vector<std::pair<uint64_t, uint32_t>>& inodes);
+  void OnInodes(const std::vector<std::pair<Inode, BlockDeviceID>>& inodes);
+
+  bool AddInodeFileMapEntry(
+      InodeFileMap* inode_file_map,
+      BlockDeviceID block_device_id,
+      Inode inode,
+      const std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>&
+          block_device_map);
 
  private:
   const TracingSessionID session_id_;
-  std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>* file_system_inodes_;
+  std::map<BlockDeviceID, std::map<Inode, InodeMapValue>>*
+      system_partition_files_;
   std::multimap<BlockDeviceID, std::string> mount_points_;
   std::unique_ptr<TraceWriter> writer_;
   base::WeakPtrFactory<InodeFileDataSource> weak_factory_;  // Keep last.
diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc
index 854abf1..83b52af 100644
--- a/src/traced/probes/probes_producer.cc
+++ b/src/traced/probes/probes_producer.cc
@@ -268,8 +268,8 @@
     const FtraceMetadata& metadata) {
   trace_packet_->Finalize();
 
-  if (file_source_ && !metadata.inodes.empty()) {
-    auto inodes = metadata.inodes;
+  if (file_source_ && !metadata.inode_and_device.empty()) {
+    auto inodes = metadata.inode_and_device;
     auto weak_file_source = file_source_;
     task_runner_->PostTask([weak_file_source, inodes] {
       if (weak_file_source)
diff --git a/test/cts/end_to_end_integrationtest_cts.cc b/test/cts/end_to_end_integrationtest_cts.cc
index 4ee3f56..787be39 100644
--- a/test/cts/end_to_end_integrationtest_cts.cc
+++ b/test/cts/end_to_end_integrationtest_cts.cc
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include <gtest/gtest.h>
+#include <random>
 
+#include "gtest/gtest.h"
 #include "perfetto/trace/test_event.pbzero.h"
 #include "perfetto/trace/trace_packet.pb.h"
 #include "perfetto/trace/trace_packet.pbzero.h"
 #include "perfetto/traced/traced.h"
 #include "perfetto/tracing/core/trace_packet.h"
-
 #include "test/fake_consumer.h"
 
 namespace perfetto {
@@ -30,7 +30,6 @@
  protected:
   void TestMockProducer(const std::string& producer_name) {
     base::TestTaskRunner task_runner;
-    auto finish = task_runner.CreateCheckpoint("no.more.packets");
 
     // Setup the trace config.
     TraceConfig trace_config;
@@ -41,26 +40,33 @@
     ds_config->set_name(producer_name);
     ds_config->set_target_buffer(0);
 
+    // The parameters for the producer.
+    static constexpr uint32_t kRandomSeed = 42;
+    static constexpr uint32_t kEventCount = 10;
+
+    // Setup the test to use a random number generator.
+    ds_config->mutable_for_testing()->set_seed(kRandomSeed);
+    ds_config->mutable_for_testing()->set_message_count(kEventCount);
+
+    // Create the random generator with the same seed.
+    std::minstd_rand0 rnd_engine(kRandomSeed);
+
     // Setip the function.
     uint64_t total = 0;
-    auto function = [&total, &finish](std::vector<TracePacket> packets,
-                                      bool has_more) {
-      if (has_more) {
-        for (auto& packet : packets) {
-          packet.Decode();
-          ASSERT_TRUE(packet->has_for_testing());
-          // ASSERT_EQ(protos::TracePacket::kTrustedUid,
-          //          packet->optional_trusted_uid_case());
-          ASSERT_EQ(packet->for_testing().str(), "test");
-        }
-        total += packets.size();
+    auto finish = task_runner.CreateCheckpoint("no.more.packets");
+    auto function = [&total, &finish, &rnd_engine](
+                        std::vector<TracePacket> packets, bool has_more) {
+      for (auto& packet : packets) {
+        ASSERT_TRUE(packet.Decode());
+        ASSERT_TRUE(packet->has_for_testing());
+        ASSERT_EQ(protos::TracePacket::kTrustedUid,
+                  packet->optional_trusted_uid_case());
+        ASSERT_EQ(packet->for_testing().seq_value(), rnd_engine());
+      }
+      total += packets.size();
 
-        // TODO(lalitm): renable this when stiching inside the service is
-        // present.
-        // ASSERT_FALSE(packets->empty());
-      } else {
-        ASSERT_EQ(total, 10u);
-        ASSERT_TRUE(packets.empty());
+      if (!has_more) {
+        ASSERT_EQ(total, kEventCount);
         finish();
       }
     };
@@ -73,7 +79,7 @@
     // and the consumer tries to retrieve it. For now wait a bit until the
     // service is done, but we should add explicit flushing to avoid this.
     task_runner.PostDelayedTask([&consumer]() { consumer.ReadTraceData(); },
-                                2500);
+                                5000);
 
     task_runner.RunUntilCheckpoint("no.more.packets", 10000);
   }
diff --git a/test/cts/producer/AndroidManifest.xml b/test/cts/producer/AndroidManifest.xml
index 6924a9a..6139dca 100755
--- a/test/cts/producer/AndroidManifest.xml
+++ b/test/cts/producer/AndroidManifest.xml
@@ -17,6 +17,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.perfetto.producer">
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+
     <application>
         <activity android:name=".ProducerActivity" >
             <intent-filter>
diff --git a/test/cts/producer/res/mipmap-hdpi/ic_launcher.png b/test/cts/producer/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..7e5732c
--- /dev/null
+++ b/test/cts/producer/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/test/cts/producer/res/mipmap-mdpi/ic_launcher.png b/test/cts/producer/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..8fc5d07
--- /dev/null
+++ b/test/cts/producer/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/test/cts/producer/res/mipmap-xhdpi/ic_launcher.png b/test/cts/producer/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..0bef6d9
--- /dev/null
+++ b/test/cts/producer/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/test/cts/producer/res/mipmap-xxhdpi/ic_launcher.png b/test/cts/producer/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..7144af0
--- /dev/null
+++ b/test/cts/producer/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/test/cts/producer/res/mipmap-xxxhdpi/ic_launcher.png b/test/cts/producer/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..2dbbdfc
--- /dev/null
+++ b/test/cts/producer/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/test/cts/producer/src/android/perfetto/producer/ProducerActivity.java b/test/cts/producer/src/android/perfetto/producer/ProducerActivity.java
index 2dfa0ce..1eedfe3 100644
--- a/test/cts/producer/src/android/perfetto/producer/ProducerActivity.java
+++ b/test/cts/producer/src/android/perfetto/producer/ProducerActivity.java
@@ -17,48 +17,49 @@
 package android.perfetto.producer;
 
 import android.app.Activity;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 
 public class ProducerActivity extends Activity {
-    private boolean paused = true;
-    private final Handler handler = new Handler();
 
     @Override
     public void onResume() {
         super.onResume();
 
-        paused = false;
-        handler.post(new Runnable() {
-            @Override
+        NotificationManager manager =
+                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+
+        NotificationChannel serviceChannel =
+                new NotificationChannel("service", "service", NotificationManager.IMPORTANCE_LOW);
+        serviceChannel.setDescription("Perfetto service");
+        serviceChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
+        manager.createNotificationChannel(serviceChannel);
+
+        NotificationChannel isolatedChannel = new NotificationChannel(
+                "isolated_service", "isolated_service", NotificationManager.IMPORTANCE_LOW);
+        isolatedChannel.setDescription("Perfetto isolated service");
+        isolatedChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
+        manager.createNotificationChannel(isolatedChannel);
+
+        startForegroundService(new Intent(ProducerActivity.this, ProducerService.class));
+        startForegroundService(new Intent(ProducerActivity.this, ProducerIsolatedService.class));
+
+        System.loadLibrary("perfettocts_jni");
+        new Thread(new Runnable() {
             public void run() {
-                if (paused) {
-                    return;
+                try {
+                    setupProducer();
+                } catch (Exception ex) {
+                    ex.printStackTrace();
                 }
-
-                startService(new Intent(ProducerActivity.this, ProducerService.class));
-                startService(new Intent(ProducerActivity.this, ProducerIsolatedService.class));
-
-                System.loadLibrary("perfettocts_jni");
-                new Thread(new Runnable() {
-                    public void run() {
-                        try {
-                            setupProducer();
-                        } catch (Exception ex) {
-                            ex.printStackTrace();
-                        }
-                    }
-                })
-                        .start();
             }
-        });
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        paused = true;
+        })
+                .start();
     }
 
     private static native void setupProducer();
diff --git a/test/cts/producer/src/android/perfetto/producer/ProducerIsolatedService.java b/test/cts/producer/src/android/perfetto/producer/ProducerIsolatedService.java
index cde5c32..9f26f54 100644
--- a/test/cts/producer/src/android/perfetto/producer/ProducerIsolatedService.java
+++ b/test/cts/producer/src/android/perfetto/producer/ProducerIsolatedService.java
@@ -16,13 +16,23 @@
 
 package android.perfetto.producer;
 
+import android.app.Notification;
 import android.app.Service;
 import android.os.IBinder;
 import android.content.Intent;
 
 public class ProducerIsolatedService extends Service {
+    private static final int NOTIFICATION_ID = 123;
+
     @Override
     public void onCreate() {
+        Notification.Builder builder = new Notification.Builder(this, "isolated_service");
+        builder.setContentTitle("Perfetto isolated service")
+                .setContentText("Perfetto isolated service")
+                .setSmallIcon(R.mipmap.ic_launcher);
+
+        startForeground(NOTIFICATION_ID, builder.build());
+
         System.loadLibrary("perfettocts_jni");
         new Thread(new Runnable() {
             @Override
diff --git a/test/cts/producer/src/android/perfetto/producer/ProducerService.java b/test/cts/producer/src/android/perfetto/producer/ProducerService.java
index f649ddc..a86267a 100644
--- a/test/cts/producer/src/android/perfetto/producer/ProducerService.java
+++ b/test/cts/producer/src/android/perfetto/producer/ProducerService.java
@@ -16,13 +16,22 @@
 
 package android.perfetto.producer;
 
+import android.app.Notification;
 import android.app.Service;
 import android.os.IBinder;
 import android.content.Intent;
 
 public class ProducerService extends Service {
+    private static final int NOTIFICATION_ID = 456;
+
     @Override
     public void onCreate() {
+        Notification.Builder builder = new Notification.Builder(this, "service");
+        builder.setContentTitle("Perfetto service")
+                .setContentText("Perfetto service")
+                .setSmallIcon(R.mipmap.ic_launcher);
+        startForeground(NOTIFICATION_ID, builder.build());
+
         System.loadLibrary("perfettocts_jni");
         new Thread(new Runnable() {
             @Override
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.cc b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
index 9f611f8..4a1df78 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
@@ -74,6 +74,14 @@
   if (StartsWith(field.type_and_name, "char ") && field.size == 0)
     return "string";
 
+  // ino_t, i_ino and dev_t are 32bit on some devices 64bit on others. For the
+  // protos we need to choose the largest possible size.
+  if (StartsWith(field.type_and_name, "ino_t ") ||
+      StartsWith(field.type_and_name, "i_ino ") ||
+      StartsWith(field.type_and_name, "dev_t ")) {
+    return "uint64";
+  }
+
   // Ints of various sizes:
   if (field.size <= 4 && field.is_signed)
     return "int32";
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen_unittest.cc b/tools/ftrace_proto_gen/ftrace_proto_gen_unittest.cc
index ec748ee..d48cc6f 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen_unittest.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen_unittest.cc
@@ -35,9 +35,12 @@
   EXPECT_EQ(InferProtoType(Field{"unsigned int foo", 0, 4, false}), "uint32");
   EXPECT_EQ(InferProtoType(Field{"u32 control_freq", 44, 4, false}), "uint32");
 
-  EXPECT_EQ(InferProtoType(Field{"ino_t foo", 0, 4, false}), "uint32");
+  EXPECT_EQ(InferProtoType(Field{"ino_t foo", 0, 4, false}), "uint64");
   EXPECT_EQ(InferProtoType(Field{"ino_t foo", 0, 8, false}), "uint64");
 
+  EXPECT_EQ(InferProtoType(Field{"dev_t foo", 0, 4, false}), "uint64");
+  EXPECT_EQ(InferProtoType(Field{"dev_t foo", 0, 8, false}), "uint64");
+
   EXPECT_EQ(InferProtoType(Field{"char foo", 0, 0, false}), "string");
 }
 
diff --git a/tools/tmux b/tools/tmux
index 44267fe..b1810a9 100755
--- a/tools/tmux
+++ b/tools/tmux
@@ -16,7 +16,13 @@
 
 function is_monolithic {
   local out=$1
-  gn args $out --list --short | grep 'monolithic_binaries = true' > /dev/null
+  gn args $out --list --short | grep 'monolithic_binaries = true' 2>&1 >/dev/null
+  return $?
+}
+
+function is_android {
+  local out=$1
+  gn args $out --list --short | grep 'target_os = "android"' 2>&1 >/dev/null
   return $?
 }
 
@@ -25,16 +31,39 @@
 }
 
 function adb_supports_push_sync {
-  adb --help | grep 'push.*\[--sync\]'
+  adb --help | grep 'push.*\[--sync\]' 2>&1 >/dev/null
+}
+
+function traced_probes_cmd {
+  if is_android $OUT; then
+    echo "$PREFIX $DIR/traced_probes"
+  else
+    echo "sudo $PREFIX $DIR/traced_probes"
+  fi
 }
 
 function push {
-  local maybe_sync=''
-  if adb_supports_push_sync; then
-    maybe_sync='--sync '
+  if is_android $OUT; then
+    local maybe_sync=''
+    if adb_supports_push_sync; then
+      maybe_sync='--sync '
+    fi
+    echo adb push $maybe_sync $1 $DIR
+    adb push $maybe_sync $1 $DIR
+  else
+    echo cp $1 $DIR
+    cp $1 $DIR
   fi
-  echo adb push $maybe_sync $1 $2
-  adb push $maybe_sync $1 $2
+}
+
+function pull {
+  if is_android $OUT; then
+    echo adb pull $DIR/$1 $2
+    adb pull $DIR/$1 $2
+  else
+    echo cp $DIR/$1 $2
+    cp $DIR/$1 $2
+  fi
 }
 
 # If not set guess the OUT dir using the latest directory.
@@ -48,32 +77,34 @@
 # CONFIG=ftrace.cfg or to :test. Defaults to :test.
 CONFIG="${CONFIG:-:test}"
 
+if is_android $OUT ; then
+  DIR=/data/local/tmp
+else
+  DIR=$(mktemp -d)
+fi
+
 ninja -C $OUT traced traced_probes perfetto trace_to_text test/configs
 
-push $OUT/traced /data/local/tmp/
-push $OUT/traced_probes /data/local/tmp/
-push $OUT/perfetto /data/local/tmp/
+push $OUT/traced
+push $OUT/traced_probes
+push $OUT/perfetto
 reset_tracing
 
 PREFIX=""
-if ! is_monolithic $OUT;  then
-  PREFIX="LD_LIBRARY_PATH=/data/local/tmp"
-  set -x
-  adb push $OUT/libtraced_shared.so /data/local/tmp/
-  set +x
+if ! is_monolithic $OUT; then
+  PREFIX="LD_LIBRARY_PATH=$DIR"
+  push $OUT/libtraced_shared.so
 fi
 
 CONFIG_DEVICE_PATH=$CONFIG
 if [[ "$CONFIG" != ":test" ]]; then
-  CONFIG_DEVICE_PATH=/data/local/tmp/$CONFIG.protobuf
+  CONFIG_DEVICE_PATH=$DIR/$CONFIG.protobuf
   CONFIG_PATH=$OUT/$CONFIG.protobuf;
   if [[ ! -f $CONFIG_PATH ]]; then
     echo 'Config "'$CONFIG_PATH'" not known.'
     exit 1
   fi
-  set -x
-  adb push $CONFIG_PATH /data/local/tmp/
-  set +x
+  push $CONFIG_PATH
 fi
 
 if tmux has-session -t demo; then
@@ -97,26 +128,32 @@
 
 tmux select-pane -t 0
 tmux send-keys "clear" C-m
-tmux send-keys "adb shell" C-m
+if is_android $OUT; then
+  tmux send-keys "adb shell" C-m
+fi
 
 tmux select-pane -t 1
 tmux send-keys "clear" C-m
-tmux send-keys "adb shell" C-m
+if is_android $OUT; then
+  tmux send-keys "adb shell" C-m
+fi
 
 tmux select-pane -t 2
 tmux send-keys "clear" C-m
-tmux send-keys "adb shell" C-m
+if is_android $OUT; then
+  tmux send-keys "adb shell" C-m
+fi
 
 sleep 2
 
 tmux select-pane -t 1
-tmux send-keys "$PREFIX /data/local/tmp/traced" Enter
+tmux send-keys "$PREFIX $DIR/traced" Enter
 
 tmux select-pane -t 0
-tmux send-keys "$PREFIX /data/local/tmp/traced_probes" Enter
+tmux send-keys "$(traced_probes_cmd)" Enter
 
 tmux select-pane -t 2
-tmux send-keys "$PREFIX /data/local/tmp/perfetto -c $CONFIG_DEVICE_PATH -o /data/local/tmp/trace"
+tmux send-keys "$PREFIX $DIR/perfetto -c $CONFIG_DEVICE_PATH -o $DIR/trace"
 
 # Select consumer pane.
 tmux select-pane -t 2
@@ -125,6 +162,5 @@
 
 TRACE=$HOME/Downloads/trace.json
 echo -e "\n\x1b[32mPulling trace into $TRACE\x1b[0m"
-set -x
-adb pull /data/local/tmp/trace /tmp/trace.protobuf
+pull trace /tmp/trace.protobuf
 $OUT/trace_to_text systrace < /tmp/trace.protobuf > $TRACE
diff --git a/tools/trace_to_text/main.cc b/tools/trace_to_text/main.cc
index 8a63e07..ccc490b 100644
--- a/tools/trace_to_text/main.cc
+++ b/tools/trace_to_text/main.cc
@@ -17,6 +17,7 @@
 #include <inttypes.h>
 
 #include <stdio.h>
+#include <sys/sysmacros.h>
 #include <algorithm>
 #include <fstream>
 #include <iostream>
@@ -607,19 +608,16 @@
   char line[2048];
   sprintf(line,
           "ext4_sync_file_enter: dev %d,%d ino %lu parent %lu datasync %d \\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
-          (unsigned long)event.ino(), (unsigned long)event.parent(),
-          event.datasync());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.parent(), event.datasync());
   return std::string(line);
 }
 
 std::string FormatExt4SyncFileExit(const Ext4SyncFileExitFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_sync_file_exit: dev %d,%d ino %lu ret %d\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
-          (unsigned long)event.ino(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.ret());
   return std::string(line);
 }
 
@@ -627,9 +625,8 @@
   char line[2048];
   sprintf(line,
           "ext4_da_write_begin: dev %d,%d ino %lu pos %lld len %u flags %u\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
-          (unsigned long)event.ino(), event.pos(), event.len(), event.flags());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.len(), event.flags());
   return std::string(line);
 }
 
@@ -637,17 +634,15 @@
   char line[2048];
   sprintf(line,
           "ext4_da_write_end: dev %d,%d ino %lu pos %lld len %u copied %u\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
-          (unsigned long)event.ino(), event.pos(), event.len(), event.copied());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.len(), event.copied());
   return std::string(line);
 }
 
 std::string FormatBlockRqIssue(const BlockRqIssueFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_issue: %d,%d %s %u (%s) %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           event.bytes(), event.cmd().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
@@ -1116,8 +1111,7 @@
 std::string FormatBlockBioBackmerge(const BlockBioBackmergeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_bio_backmerge: %d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1128,8 +1122,7 @@
   sprintf(line,
           "block_bio_bounce:"
           "%d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1138,8 +1131,7 @@
 std::string FormatBlockBioComplete(const BlockBioCompleteFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_bio_complete: %d,%d %s %llu + %u [%d]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(), event.error());
   return std::string(line);
 }
@@ -1148,8 +1140,7 @@
     const BlockBioFrontmergeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_bio_frontmerge: %d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1158,8 +1149,7 @@
 std::string FormatBlockBioQueue(const BlockBioQueueFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_bio_queue: %d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1168,11 +1158,9 @@
 std::string FormatBlockBioRemap(const BlockBioRemapFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_bio_remap:  %d,%d %s %llu + %u <- (%d,%d) %llu\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
-          (unsigned int)(event.old_dev() >> 20),
-          (unsigned int)(event.old_dev() & ((1U << 20) - 1)),
+          major(event.dev()), minor(event.dev()),
           (unsigned long long)event.old_sector());
   return std::string(line);
 }
@@ -1180,17 +1168,15 @@
 std::string FormatBlockDirtyBuffer(const BlockDirtyBufferFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_dirty_buffer: %d,%d sector=%llu size=%zu\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
+          major(event.dev()), minor(event.dev()),
           (unsigned long long)event.sector(), (unsigned long)event.size());
   return std::string(line);
 }
 
 std::string FormatBlockGetrq(const BlockGetrqFtraceEvent& event) {
   char line[2048];
-  sprintf(line, "block_getrq: %d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+  sprintf(line, "block_getrq: %d,%d %s %llu + %u [%s]\\n", major(event.dev()),
+          minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1205,8 +1191,7 @@
 std::string FormatBlockRqAbort(const BlockRqAbortFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_abort: %d,%d %s (%s) %llu + %u [%d]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           event.cmd().c_str(), (unsigned long long)event.sector(),
           event.nr_sector(), event.errors());
   return std::string(line);
@@ -1215,8 +1200,7 @@
 std::string FormatBlockRqComplete(const BlockRqCompleteFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_complete: %d,%d %s (%s) %llu + %u [%d]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           event.cmd().c_str(), (unsigned long long)event.sector(),
           event.nr_sector(), event.errors());
   return std::string(line);
@@ -1225,8 +1209,7 @@
 std::string FormatBlockRqInsert(const BlockRqInsertFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_insert: %d,%d %s %u (%s) %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           event.bytes(), event.cmd().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
@@ -1236,11 +1219,9 @@
 std::string FormatBlockRqRemap(const BlockRqRemapFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_remap: %d,%d %s %llu + %u <- (%d,%d) %llu %u\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
-          (unsigned int)(event.old_dev() >> 20),
-          (unsigned int)(event.old_dev() & ((1U << 20) - 1)),
+          major(event.dev()), minor(event.dev()),
           (unsigned long long)event.old_sector(), event.nr_bios());
   return std::string(line);
 }
@@ -1248,8 +1229,7 @@
 std::string FormatBlockRqRequeue(const BlockRqRequeueFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_rq_requeue: %d,%d %s (%s) %llu + %u [%d\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+          major(event.dev()), minor(event.dev()), event.rwbs().c_str(),
           event.cmd().c_str(), (unsigned long long)event.sector(),
           event.nr_sector(), event.errors());
   return std::string(line);
@@ -1257,9 +1237,8 @@
 
 std::string FormatBlockSleeprq(const BlockSleeprqFtraceEvent& event) {
   char line[2048];
-  sprintf(line, "block_sleeprq: %d,%d %s %llu + %u [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+  sprintf(line, "block_sleeprq: %d,%d %s %llu + %u [%s]\\n", major(event.dev()),
+          minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(), event.nr_sector(),
           event.comm().c_str());
   return std::string(line);
@@ -1267,9 +1246,8 @@
 
 std::string FormatBlockSplit(const BlockSplitFtraceEvent& event) {
   char line[2048];
-  sprintf(line, "block_split: %d,%d %s %llu / %llu [%s]\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)), event.rwbs().c_str(),
+  sprintf(line, "block_split: %d,%d %s %llu / %llu [%s]\\n", major(event.dev()),
+          minor(event.dev()), event.rwbs().c_str(),
           (unsigned long long)event.sector(),
           (unsigned long long)event.new_sector(), event.comm().c_str());
   return std::string(line);
@@ -1278,8 +1256,7 @@
 std::string FormatBlockTouchBuffer(const BlockTouchBufferFtraceEvent& event) {
   char line[2048];
   sprintf(line, "block_touch_buffer: %d,%d sector=%llu size=%zu\\n",
-          (unsigned int)(event.dev() >> 20),
-          (unsigned int)(event.dev() & ((1U << 20) - 1)),
+          major(event.dev()), minor(event.dev()),
           (unsigned long long)event.sector(), (unsigned long)event.size());
   return std::string(line);
 }
@@ -1296,9 +1273,8 @@
   sprintf(line,
           "ext4_alloc_da_blocks: dev %d,%d ino %lu data_blocks %u meta_blocks "
           "%u \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.data_blocks(), event.meta_blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.data_blocks(), event.meta_blocks());
   return std::string(line);
 }
 
@@ -1308,20 +1284,18 @@
   sprintf(line,
           "ext4_allocate_blocks: dev %d,%d ino %lu flags %s len %u block %llu "
           "lblk %u goal %llu lleft %u lright %u pleft %llu pright %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), GetExt4HintFlag(event.flags()),
-          event.len(), event.block(), event.logical(), event.goal(),
-          event.lleft(), event.lright(), event.pleft(), event.pright());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          GetExt4HintFlag(event.flags()), event.len(), event.block(),
+          event.logical(), event.goal(), event.lleft(), event.lright(),
+          event.pleft(), event.pright());
   return std::string(line);
 }
 
 std::string FormatExt4AllocateInode(const Ext4AllocateInodeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_allocate_inode: dev %d,%d ino %lu dir %lu mode 0%o\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.dir(), event.mode());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.dir(), event.mode());
   return std::string(line);
 }
 
@@ -1330,9 +1304,8 @@
   char line[2048];
   sprintf(line,
           "ext4_begin_ordered_truncate: dev %d,%d ino %lu new_size %lld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.new_size());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.new_size());
   return std::string(line);
 }
 
@@ -1340,9 +1313,8 @@
   char line[2048];
   sprintf(line,
           "ext4_collapse_range: dev %d,%d ino %lu offset %lld len %lld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.offset(), event.len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.offset(), event.len());
   return std::string(line);
 }
 
@@ -1353,11 +1325,10 @@
           "ext4_da_release_space: dev %d,%d ino %lu mode 0%o i_blocks %llu "
           "freed_blocks %d reserved_data_blocks %d reserved_meta_blocks %d "
           "allocated_meta_blocks %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.mode(), event.i_blocks(),
-          event.freed_blocks(), event.reserved_data_blocks(),
-          event.reserved_meta_blocks(), event.allocated_meta_blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.mode(), event.i_blocks(), event.freed_blocks(),
+          event.reserved_data_blocks(), event.reserved_meta_blocks(),
+          event.allocated_meta_blocks());
   return std::string(line);
 }
 
@@ -1367,10 +1338,9 @@
   sprintf(line,
           "ext4_da_reserve_space:dev %d,%d ino %lu mode 0%o i_blocks %llu "
           "reserved_data_blocks %d reserved_meta_blocks %d \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.mode(), event.i_blocks(),
-          event.reserved_data_blocks(), event.reserved_meta_blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.mode(), event.i_blocks(), event.reserved_data_blocks(),
+          event.reserved_meta_blocks());
   return std::string(line);
 }
 
@@ -1381,12 +1351,10 @@
           "ext4_da_update_reserve_space: dev %d,%d ino %lu mode 0%o i_blocks "
           "%llu used_blocks %d reserved_data_blocks %d reserved_meta_blocks %d "
           "allocated_meta_blocks %d quota_claim %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.mode(), event.i_blocks(),
-          event.used_blocks(), event.reserved_data_blocks(),
-          event.reserved_meta_blocks(), event.allocated_meta_blocks(),
-          event.quota_claim());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.mode(), event.i_blocks(), event.used_blocks(),
+          event.reserved_data_blocks(), event.reserved_meta_blocks(),
+          event.allocated_meta_blocks(), event.quota_claim());
   return std::string(line);
 }
 
@@ -1395,10 +1363,9 @@
   sprintf(line,
           "ext4_da_write_pages: dev %d,%d ino %lu first_page %lu nr_to_write "
           "%ld sync_mode %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.first_page(),
-          (long)event.nr_to_write(), event.sync_mode());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.first_page(), (long)event.nr_to_write(),
+          event.sync_mode());
   return std::string(line);
 }
 
@@ -1408,18 +1375,15 @@
   char line[2048];
   sprintf(line,
           "ext4_da_write_pages_extent: dev %d,%d ino %lu lblk %llu len %u \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.len());
   return std::string(line);
 }
 
 std::string FormatExt4DiscardBlocks(const Ext4DiscardBlocksFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_discard_blocks: dev %d,%d blk %llu count %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.blk(),
-          event.count());
+          major(event.dev()), minor(event.dev()), event.blk(), event.count());
   return std::string(line);
 }
 
@@ -1427,18 +1391,15 @@
     const Ext4DiscardPreallocationsFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_discard_preallocations: dev %d,%d ino %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino());
   return std::string(line);
 }
 
 std::string FormatExt4DropInode(const Ext4DropInodeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_drop_inode: dev %d,%d ino %lu drop %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.drop());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.drop());
   return std::string(line);
 }
 
@@ -1447,9 +1408,8 @@
   char line[2048];
   sprintf(line,
           "ext4_es_cache_extent: dev %d,%d ino %lu es [%u/%u) mapped %llu \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.len(), event.pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.len(), event.pblk());
   return std::string(line);
 }
 
@@ -1459,9 +1419,8 @@
   sprintf(
       line,
       "ext4_es_find_delayed_extent_range_enter: dev %d,%d ino %lu lblk %u\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.lblk());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.lblk());
   return std::string(line);
 }
 
@@ -1472,9 +1431,8 @@
   sprintf(line,
           "ext4_es_find_delayed_extent_range_exit: dev %d,%d ino %lu es "
           "[%u/%u) mapped %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.len(), event.pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.len(), event.pblk());
   return std::string(line);
 }
 
@@ -1484,9 +1442,8 @@
   char line[2048];
   sprintf(line,
           "ext4_es_insert_extent: dev %d,%d ino %lu es [%u/%u) mapped %llu \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.len(), event.pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.len(), event.pblk());
   return std::string(line);
 }
 
@@ -1494,9 +1451,8 @@
     const Ext4EsLookupExtentEnterFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_es_lookup_extent_enter: dev %d,%d ino %lu lblk %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk());
   return std::string(line);
 }
 
@@ -1507,9 +1463,8 @@
   sprintf(
       line,
       "ext4_es_lookup_extent_exit: dev %d,%d ino %lu found %d [%u/%u) %llu\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.found(), event.lblk(), event.len(),
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.found(), event.lblk(), event.len(),
       event.found() ? event.pblk() : 0);
   return std::string(line);
 }
@@ -1518,9 +1473,8 @@
     const Ext4EsRemoveExtentFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_es_remove_extent: dev %d,%d ino %lu es [%lld/%lld)\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.len());
   return std::string(line);
 }
 
@@ -1529,8 +1483,7 @@
   sprintf(line,
           "ext4_es_shrink: dev %d,%d nr_shrunk %d, scan_time %llu nr_skipped "
           "%d retried %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.nr_shrunk(),
+          major(event.dev()), minor(event.dev()), event.nr_shrunk(),
           event.scan_time(), event.nr_skipped(), event.retried());
   return std::string(line);
 }
@@ -1538,9 +1491,8 @@
 std::string FormatExt4EsShrinkCount(const Ext4EsShrinkCountFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_es_shrink_count: dev %d,%d nr_to_scan %d cache_cnt %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          event.nr_to_scan(), event.cache_cnt());
+          major(event.dev()), minor(event.dev()), event.nr_to_scan(),
+          event.cache_cnt());
   return std::string(line);
 }
 
@@ -1549,9 +1501,8 @@
   char line[2048];
   sprintf(line,
           "ext4_es_shrink_scan_enter: dev %d,%d nr_to_scan %d cache_cnt %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          event.nr_to_scan(), event.cache_cnt());
+          major(event.dev()), minor(event.dev()), event.nr_to_scan(),
+          event.cache_cnt());
   return std::string(line);
 }
 
@@ -1560,8 +1511,7 @@
   char line[2048];
   sprintf(line,
           "ext4_es_shrink_scan_exit: dev %d,%d nr_shrunk %d cache_cnt %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.nr_shrunk(),
+          major(event.dev()), minor(event.dev()), event.nr_shrunk(),
           event.cache_cnt());
   return std::string(line);
 }
@@ -1569,9 +1519,8 @@
 std::string FormatExt4EvictInode(const Ext4EvictInodeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_evict_inode: dev %d,%d ino %lu nlink %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.nlink());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.nlink());
   return std::string(line);
 }
 
@@ -1581,10 +1530,9 @@
   sprintf(line,
           "ext4_ext_convert_to_initialized_enter: dev %d,%d ino %lu m_lblk %u "
           "m_len %u u_lblk %u u_len %u u_pblk %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.m_lblk(), event.m_len(),
-          event.u_lblk(), event.u_len(), event.u_pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.m_lblk(), event.m_len(), event.u_lblk(), event.u_len(),
+          event.u_pblk());
   return std::string(line);
 }
 
@@ -1595,11 +1543,9 @@
           "ext4_ext_convert_to_initialized_fastpath: dev %d,%d ino %lu m_lblk "
           "%u m_len %u u_lblk %u u_len %u u_pblk %llu i_lblk %u i_len %u "
           "i_pblk %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.m_lblk(), event.m_len(),
-          event.u_lblk(), event.u_len(), event.u_pblk(), event.i_lblk(),
-          event.i_len(), event.i_pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.m_lblk(), event.m_len(), event.u_lblk(), event.u_len(),
+          event.u_pblk(), event.i_lblk(), event.i_len(), event.i_pblk());
   return std::string(line);
 }
 
@@ -1609,10 +1555,8 @@
   sprintf(line,
           "ext4_ext_handle_unwritten_extents: dev %d,%d ino %lu m_lblk %u "
           "m_pblk %llu m_len %u flags %s allocated %d newblock %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.lblk(),
-          (unsigned long long)event.pblk(), event.len(),
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.lblk(), (unsigned long long)event.pblk(), event.len(),
           GetExt4ExtFlag(event.flags()), (unsigned int)event.allocated(),
           (unsigned long long)event.newblk());
   return std::string(line);
@@ -1621,18 +1565,16 @@
 std::string FormatExt4ExtInCache(const Ext4ExtInCacheFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_ext_in_cache: dev %d,%d ino %lu lblk %u ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.lblk(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.lblk(), event.ret());
   return std::string(line);
 }
 
 std::string FormatExt4ExtLoadExtent(const Ext4ExtLoadExtentFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_ext_load_extent: dev %d,%d ino %lu lblk %u pblk %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.pblk());
   return std::string(line);
 }
 
@@ -1642,10 +1584,8 @@
   sprintf(
       line,
       "ext4_ext_map_blocks_enter: dev %d,%d ino %lu lblk %u len %u flags %s\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.lblk(), event.len(),
-      GetExt4ExtFlag(event.flags()));
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.lblk(), event.len(), GetExt4ExtFlag(event.flags()));
   return std::string(line);
 }
 
@@ -1655,10 +1595,8 @@
   sprintf(line,
           "ext4_ext_map_blocks_exit: dev %d,%d ino %lu lblk %u pblk %llu len "
           "%u flags %x ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.pblk(), event.len(),
-          event.flags(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.pblk(), event.len(), event.flags(), event.ret());
   return std::string(line);
 }
 
@@ -1667,10 +1605,8 @@
   sprintf(
       line,
       "ext4_ext_put_in_cache: dev %d,%d ino %lu lblk %u len %u start %llu\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), (unsigned)event.lblk(), event.len(),
-      (unsigned long long)event.start());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      (unsigned)event.lblk(), event.len(), (unsigned long long)event.start());
   return std::string(line);
 }
 
@@ -1680,10 +1616,8 @@
   sprintf(
       line,
       "ext4_ext_remove_space: dev %d,%d ino %lu since %u end %u depth %d\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), (unsigned)event.start(),
-      (unsigned)event.end(), event.depth());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      (unsigned)event.start(), (unsigned)event.end(), event.depth());
   return std::string(line);
 }
 
@@ -1693,20 +1627,17 @@
   sprintf(line,
           "ext4_ext_remove_space_done: dev %d,%d ino %lu since %u end %u depth "
           "%d partial %lld remaining_entries %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.start(),
-          (unsigned)event.end(), event.depth(), (long long)event.partial(),
-          (unsigned short)event.eh_entries());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.start(), (unsigned)event.end(), event.depth(),
+          (long long)event.partial(), (unsigned short)event.eh_entries());
   return std::string(line);
 }
 
 std::string FormatExt4ExtRmIdx(const Ext4ExtRmIdxFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_ext_rm_idx: dev %d,%d ino %lu index_pblk %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long long)event.pblk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long long)event.pblk());
   return std::string(line);
 }
 
@@ -1715,11 +1646,10 @@
   sprintf(line,
           "ext4_ext_rm_leaf: dev %d,%d ino %lu start_lblk %u last_extent "
           "[%u(%llu), %u]partial_cluster %lld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.start(),
-          (unsigned)event.ee_lblk(), (unsigned long long)event.ee_pblk(),
-          (unsigned short)event.ee_len(), (long long)event.partial());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.start(), (unsigned)event.ee_lblk(),
+          (unsigned long long)event.ee_pblk(), (unsigned short)event.ee_len(),
+          (long long)event.partial());
   return std::string(line);
 }
 
@@ -1727,10 +1657,9 @@
   char line[2048];
   sprintf(line,
           "ext4_ext_show_extent: dev %d,%d ino %lu lblk %u pblk %llu len %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.lblk(),
-          (unsigned long long)event.pblk(), (unsigned short)event.len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.lblk(), (unsigned long long)event.pblk(),
+          (unsigned short)event.len());
   return std::string(line);
 }
 
@@ -1740,10 +1669,8 @@
   sprintf(
       line,
       "ext4_fallocate_enter: dev %d,%d ino %lu offset %lld len %lld mode %s\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.offset(), event.len(),
-      GetExt4ModeFlag(event.mode()));
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.offset(), event.len(), GetExt4ModeFlag(event.mode()));
   return std::string(line);
 }
 
@@ -1751,9 +1678,8 @@
   char line[2048];
   sprintf(line,
           "ext4_fallocate_exit: dev %d,%d ino %lu pos %lld blocks %u ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pos(), event.blocks(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.blocks(), event.ret());
   return std::string(line);
 }
 
@@ -1763,11 +1689,9 @@
   sprintf(line,
           "ext4_find_delalloc_range: dev %d,%d ino %lu from %u to %u reverse "
           "%d found %d (blk = %u)\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.from(),
-          (unsigned)event.to(), event.reverse(), event.found(),
-          (unsigned)event.found_blk());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.from(), (unsigned)event.to(), event.reverse(),
+          event.found(), (unsigned)event.found_blk());
   return std::string(line);
 }
 
@@ -1776,10 +1700,8 @@
   sprintf(
       line,
       "ext4_forget: dev %d,%d ino %lu mode 0%o is_metadata %d block %llu\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.mode(), event.is_metadata(),
-      event.block());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.mode(), event.is_metadata(), event.block());
   return std::string(line);
 }
 
@@ -1788,10 +1710,9 @@
   sprintf(line,
           "ext4_free_blocks: dev %d,%d ino %lu mode 0%o block %llu count %lu "
           "flags %s\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.mode(), event.block(),
-          (unsigned long)event.count(), GetExt4FreeBlocksFlag(event.flags()));
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.mode(), event.block(), (unsigned long)event.count(),
+          GetExt4FreeBlocksFlag(event.flags()));
   return std::string(line);
 }
 
@@ -1800,10 +1721,8 @@
   sprintf(line,
           "ext4_free_inode: dev %d,%d ino %lu mode 0%o uid %u gid %u blocks "
           "%llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.mode(), event.uid(), event.gid(),
-          event.blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.mode(), event.uid(), event.gid(), event.blocks());
   return std::string(line);
 }
 
@@ -1813,8 +1732,7 @@
   sprintf(line,
           "ext4_get_implied_cluster_alloc_exit: dev %d,%d m_lblk %u m_pblk "
           "%llu m_len %u m_flags %u ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.lblk(),
+          major(event.dev()), minor(event.dev()), event.lblk(),
           (unsigned long long)event.pblk(), event.len(), event.flags(),
           event.ret());
   return std::string(line);
@@ -1826,9 +1744,8 @@
   sprintf(
       line,
       "ext4_get_reserved_cluster_alloc: dev %d,%d ino %lu lblk %u len %u\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), (unsigned)event.lblk(), event.len());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      (unsigned)event.lblk(), event.len());
   return std::string(line);
 }
 
@@ -1838,9 +1755,8 @@
   sprintf(
       line,
       "ext4_ind_map_blocks_enter: dev %d,%d ino %lu lblk %u len %u flags %u\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-      (unsigned long)event.ino(), event.lblk(), event.len(), event.flags());
+      major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+      event.lblk(), event.len(), event.flags());
   return std::string(line);
 }
 
@@ -1850,19 +1766,16 @@
   sprintf(line,
           "ext4_ind_map_blocks_exit: dev %d,%d ino %lu lblk %u pblk %llu len "
           "%u flags %x ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.lblk(), event.pblk(), event.len(),
-          event.flags(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.lblk(), event.pblk(), event.len(), event.flags(), event.ret());
   return std::string(line);
 }
 
 std::string FormatExt4InsertRange(const Ext4InsertRangeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_insert_range: dev %d,%d ino %lu offset %lld len %lld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.offset(), event.len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.offset(), event.len());
   return std::string(line);
 }
 
@@ -1872,10 +1785,8 @@
   sprintf(line,
           "ext4_invalidatepage: dev %d,%d ino %lu page_index %lu offset %u "
           "length %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.index(),
-          event.offset(), event.length());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.index(), event.offset(), event.length());
   return std::string(line);
 }
 
@@ -1884,8 +1795,7 @@
   sprintf(
       line,
       "ext4_journal_start: dev %d,%d blocks, %d rsv_blocks, %d caller %pS\\n",
-      ((unsigned int)((event.dev()) >> 20)),
-      ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.blocks(),
+      major(event.dev()), minor(event.dev()), event.blocks(),
       event.rsv_blocks(), (void*)event.ip());
   return std::string(line);
 }
@@ -1895,8 +1805,7 @@
   char line[2048];
   sprintf(line,
           "ext4_journal_start_reserved: dev %d,%d blocks, %d caller %pS\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.blocks(),
+          major(event.dev()), minor(event.dev()), event.blocks(),
           (void*)event.ip());
   return std::string(line);
 }
@@ -1907,10 +1816,8 @@
   sprintf(line,
           "ext4_journalled_invalidatepage: dev %d,%d ino %lu page_index %lu "
           "offset %u length %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.index(),
-          event.offset(), event.length());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.index(), event.offset(), event.length());
   return std::string(line);
 }
 
@@ -1920,18 +1827,15 @@
   sprintf(line,
           "ext4_journalled_write_end: dev %d,%d ino %lu pos %lld len %u copied "
           "%u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pos(), event.len(), event.copied());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.len(), event.copied());
   return std::string(line);
 }
 
 std::string FormatExt4LoadInode(const Ext4LoadInodeFtraceEvent& event) {
   char line[2048];
-  sprintf(line, "ext4_load_inode: dev %d,%d ino %ld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino());
+  sprintf(line, "ext4_load_inode: dev %d,%d ino %ld\\n", major(event.dev()),
+          minor(event.dev()), (unsigned long)event.ino());
   return std::string(line);
 }
 
@@ -1939,8 +1843,7 @@
     const Ext4LoadInodeBitmapFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_load_inode_bitmap: dev %d,%d group %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.group());
+          major(event.dev()), minor(event.dev()), event.group());
   return std::string(line);
 }
 
@@ -1948,17 +1851,15 @@
     const Ext4MarkInodeDirtyFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mark_inode_dirty: dev %d,%d ino %lu caller %pS\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (void*)event.ip());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (void*)event.ip());
   return std::string(line);
 }
 
 std::string FormatExt4MbBitmapLoad(const Ext4MbBitmapLoadFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mb_bitmap_load: dev %d,%d group %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.group());
+          major(event.dev()), minor(event.dev()), event.group());
   return std::string(line);
 }
 
@@ -1966,8 +1867,7 @@
     const Ext4MbBuddyBitmapLoadFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mb_buddy_bitmap_load: dev %d,%d group %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.group());
+          major(event.dev()), minor(event.dev()), event.group());
   return std::string(line);
 }
 
@@ -1975,8 +1875,7 @@
     const Ext4MbDiscardPreallocationsFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mb_discard_preallocations: dev %d,%d needed %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.needed());
+          major(event.dev()), minor(event.dev()), event.needed());
   return std::string(line);
 }
 
@@ -1985,10 +1884,8 @@
   sprintf(line,
           "ext4_mb_new_group_pa: dev %d,%d ino %lu pstart %llu len %u lstart "
           "%llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pa_pstart(), event.pa_len(),
-          event.pa_lstart());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pa_pstart(), event.pa_len(), event.pa_lstart());
   return std::string(line);
 }
 
@@ -1997,10 +1894,8 @@
   sprintf(line,
           "ext4_mb_new_inode_pa: dev %d,%d ino %lu pstart %llu len %u lstart "
           "%llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pa_pstart(), event.pa_len(),
-          event.pa_lstart());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pa_pstart(), event.pa_len(), event.pa_lstart());
   return std::string(line);
 }
 
@@ -2008,8 +1903,7 @@
     const Ext4MbReleaseGroupPaFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mb_release_group_pa: dev %d,%d pstart %llu len %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.pa_pstart(),
+          major(event.dev()), minor(event.dev()), event.pa_pstart(),
           event.pa_len());
   return std::string(line);
 }
@@ -2019,9 +1913,8 @@
   char line[2048];
   sprintf(line,
           "ext4_mb_release_inode_pa: dev %d,%d ino %lu block %llu count %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.block(), event.count());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.block(), event.count());
   return std::string(line);
 }
 
@@ -2031,13 +1924,12 @@
           "ext4_mballoc_alloc: dev %d,%d inode %lu orig %u/%d/%u@%u goal "
           "%u/%d/%u@%u result %u/%d/%u@%u blks %u grps %u cr %u flags %s tail "
           "%u broken %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.orig_group(), event.orig_start(),
-          event.orig_len(), event.orig_logical(), event.goal_group(),
-          event.goal_start(), event.goal_len(), event.goal_logical(),
-          event.result_group(), event.result_start(), event.result_len(),
-          event.result_logical(), event.found(), event.groups(), event.cr(),
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.orig_group(), event.orig_start(), event.orig_len(),
+          event.orig_logical(), event.goal_group(), event.goal_start(),
+          event.goal_len(), event.goal_logical(), event.result_group(),
+          event.result_start(), event.result_len(), event.result_logical(),
+          event.found(), event.groups(), event.cr(),
           GetExt4HintFlag(event.flags()), event.tail(),
           event.buddy() ? 1 << event.buddy() : 0);
   return std::string(line);
@@ -2047,20 +1939,16 @@
     const Ext4MballocDiscardFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mballoc_discard: dev %d,%d inode %lu extent %u/%d/%d \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.result_group(),
-          event.result_start(), event.result_len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.result_group(), event.result_start(), event.result_len());
   return std::string(line);
 }
 
 std::string FormatExt4MballocFree(const Ext4MballocFreeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_mballoc_free: dev %d,%d inode %lu extent %u/%d/%d \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.result_group(),
-          event.result_start(), event.result_len());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.result_group(), event.result_start(), event.result_len());
   return std::string(line);
 }
 
@@ -2070,11 +1958,10 @@
   sprintf(line,
           "ext4_mballoc_prealloc: dev %d,%d inode %lu orig %u/%d/%u@%u result "
           "%u/%d/%u@%u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.orig_group(), event.orig_start(),
-          event.orig_len(), event.orig_logical(), event.result_group(),
-          event.result_start(), event.result_len(), event.result_logical());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.orig_group(), event.orig_start(), event.orig_len(),
+          event.orig_logical(), event.result_group(), event.result_start(),
+          event.result_len(), event.result_logical());
   return std::string(line);
 }
 
@@ -2084,8 +1971,7 @@
   sprintf(line,
           "ext4_other_inode_update_time: dev %d,%d orig_ino %lu ino %lu mode "
           "0%o uid %u gid %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
+          major(event.dev()), minor(event.dev()),
           (unsigned long)event.orig_ino(), (unsigned long)event.ino(),
           event.mode(), event.uid(), event.gid());
   return std::string(line);
@@ -2095,10 +1981,8 @@
   char line[2048];
   sprintf(line,
           "ext4_punch_hole: dev %d,%d ino %lu offset %lld len %lld mode %s\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.offset(), event.len(),
-          GetExt4ModeFlag(event.mode()));
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.offset(), event.len(), GetExt4ModeFlag(event.mode()));
   return std::string(line);
 }
 
@@ -2106,26 +1990,23 @@
     const Ext4ReadBlockBitmapLoadFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_read_block_bitmap_load: dev %d,%d group %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.group());
+          major(event.dev()), minor(event.dev()), event.group());
   return std::string(line);
 }
 
 std::string FormatExt4Readpage(const Ext4ReadpageFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_readpage: dev %d,%d ino %lu page_index %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.index());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.index());
   return std::string(line);
 }
 
 std::string FormatExt4Releasepage(const Ext4ReleasepageFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_releasepage: dev %d,%d ino %lu page_index %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.index());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.index());
   return std::string(line);
 }
 
@@ -2134,12 +2015,10 @@
   sprintf(line,
           "ext4_remove_blocks: dev %d,%d ino %lu extent [%u(%llu), %u]from %u "
           "to %u partial_cluster %lld\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned)event.ee_lblk(),
-          (unsigned long long)event.ee_pblk(), (unsigned short)event.ee_len(),
-          (unsigned)event.from(), (unsigned)event.to(),
-          (long long)event.partial());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned)event.ee_lblk(), (unsigned long long)event.ee_pblk(),
+          (unsigned short)event.ee_len(), (unsigned)event.from(),
+          (unsigned)event.to(), (long long)event.partial());
   return std::string(line);
 }
 
@@ -2148,28 +2027,25 @@
   sprintf(line,
           "ext4_request_blocks: dev %d,%d ino %lu flags %s len %u lblk %u goal "
           "%llu lleft %u lright %u pleft %llu pright %llu \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), GetExt4HintFlag(event.flags()),
-          event.len(), event.logical(), event.goal(), event.lleft(),
-          event.lright(), event.pleft(), event.pright());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          GetExt4HintFlag(event.flags()), event.len(), event.logical(),
+          event.goal(), event.lleft(), event.lright(), event.pleft(),
+          event.pright());
   return std::string(line);
 }
 
 std::string FormatExt4RequestInode(const Ext4RequestInodeFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_request_inode: dev %d,%d dir %lu mode 0%o\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.dir(), event.mode());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.dir(),
+          event.mode());
   return std::string(line);
 }
 
 std::string FormatExt4SyncFs(const Ext4SyncFsFtraceEvent& event) {
   char line[2048];
-  sprintf(line, "ext4_sync_fs: dev %d,%d wait %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))), event.wait());
+  sprintf(line, "ext4_sync_fs: dev %d,%d wait %d\\n", major(event.dev()),
+          minor(event.dev()), event.wait());
   return std::string(line);
 }
 
@@ -2192,37 +2068,32 @@
 std::string FormatExt4TruncateEnter(const Ext4TruncateEnterFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_truncate_enter: dev %d,%d ino %lu blocks %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.blocks());
   return std::string(line);
 }
 
 std::string FormatExt4TruncateExit(const Ext4TruncateExitFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_truncate_exit: dev %d,%d ino %lu blocks %llu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.blocks());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.blocks());
   return std::string(line);
 }
 
 std::string FormatExt4UnlinkEnter(const Ext4UnlinkEnterFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_unlink_enter: dev %d,%d ino %lu size %lld parent %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.size(),
-          (unsigned long)event.parent());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.size(), (unsigned long)event.parent());
   return std::string(line);
 }
 
 std::string FormatExt4UnlinkExit(const Ext4UnlinkExitFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_unlink_exit: dev %d,%d ino %lu ret %d\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.ret());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.ret());
   return std::string(line);
 }
 
@@ -2230,27 +2101,24 @@
   char line[2048];
   sprintf(line,
           "ext4_write_begin: dev %d,%d ino %lu pos %lld len %u flags %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pos(), event.len(), event.flags());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.len(), event.flags());
   return std::string(line);
 }
 
 std::string FormatExt4WriteEnd(const Ext4WriteEndFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_write_end: %d,%d ino %lu pos %lld len %u copied %u\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.pos(), event.len(), event.copied());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.pos(), event.len(), event.copied());
   return std::string(line);
 }
 
 std::string FormatExt4Writepage(const Ext4WritepageFtraceEvent& event) {
   char line[2048];
   sprintf(line, "ext4_writepage: dev %d,%d ino %lu page_index %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (unsigned long)event.index());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (unsigned long)event.index());
   return std::string(line);
 }
 
@@ -2260,11 +2128,10 @@
           "ext4_writepages: dev %d,%d ino %lu nr_to_write %ld pages_skipped "
           "%ld range_start %lld range_end %lld sync_mode %d for_kupdate %d "
           "range_cyclic %d writeback_index %lu\\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), (long)event.nr_to_write(),
-          (long)event.pages_skipped(), event.range_start(), event.range_end(),
-          event.sync_mode(), event.for_kupdate(), event.range_cyclic(),
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          (long)event.nr_to_write(), (long)event.pages_skipped(),
+          event.range_start(), event.range_end(), event.sync_mode(),
+          event.for_kupdate(), event.range_cyclic(),
           (unsigned long)event.writeback_index());
   return std::string(line);
 }
@@ -2275,11 +2142,9 @@
   sprintf(line,
           "ext4_writepages_result: dev %d,%d ino %lu ret %d pages_written %d "
           "pages_skipped %ld sync_mode %d writeback_index %lu \\n",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.ret(), event.pages_written(),
-          (long)event.pages_skipped(), event.sync_mode(),
-          (unsigned long)event.writeback_index());
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.ret(), event.pages_written(), (long)event.pages_skipped(),
+          event.sync_mode(), (unsigned long)event.writeback_index());
   return std::string(line);
 }
 
@@ -2287,10 +2152,8 @@
   char line[2048];
   sprintf(line,
           "ext4_zero_range: dev %d,%d ino %lu offset %lld len %lld mode %s\\n ",
-          ((unsigned int)((event.dev()) >> 20)),
-          ((unsigned int)((event.dev()) & ((1U << 20) - 1))),
-          (unsigned long)event.ino(), event.offset(), event.len(),
-          GetExt4ModeFlag(event.mode()));
+          major(event.dev()), minor(event.dev()), (unsigned long)event.ino(),
+          event.offset(), event.len(), GetExt4ModeFlag(event.mode()));
   return std::string(line);
 }
 
