diff --git a/authfs/src/fusefs.rs b/authfs/src/fusefs.rs
index 64ccc41..69a5cb8 100644
--- a/authfs/src/fusefs.rs
+++ b/authfs/src/fusefs.rs
@@ -47,6 +47,14 @@
 const DEFAULT_METADATA_TIMEOUT: Duration = Duration::from_secs(5);
 const ROOT_INODE: Inode = 1;
 
+/// Maximum bytes in the write transaction to the FUSE device. This limits the maximum buffer
+/// size in a read request (including FUSE protocol overhead) that the filesystem writes to.
+const MAX_WRITE_BYTES: u32 = 65536;
+
+/// Maximum bytes in a read operation.
+/// TODO(victorhsieh): This option is deprecated by FUSE. Figure out if we can remove this.
+const MAX_READ_BYTES: u32 = 65536;
+
 /// `AuthFsEntry` defines the filesystem entry type supported by AuthFS.
 pub enum AuthFsEntry {
     /// A file type that is verified against fs-verity signature (thus read-only). The file is
@@ -74,14 +82,10 @@
     /// Root directory entry table for path to `Inode` lookup. The root directory content should
     /// remain constant throughout the filesystem's lifetime.
     root_entries: HashMap<PathBuf, Inode>,
-
-    /// Maximum bytes in the write transaction to the FUSE device. This limits the maximum buffer
-    /// size in a read request (including FUSE protocol overhead) that the filesystem writes to.
-    max_write: u32,
 }
 
 impl AuthFs {
-    pub fn new(root_entries_by_path: HashMap<PathBuf, AuthFsEntry>, max_write: u32) -> AuthFs {
+    pub fn new(root_entries_by_path: HashMap<PathBuf, AuthFsEntry>) -> AuthFs {
         let mut next_inode = ROOT_INODE + 1;
         let mut inode_table = BTreeMap::new();
         let mut root_entries = HashMap::new();
@@ -92,7 +96,7 @@
             inode_table.insert(next_inode, entry);
         });
 
-        AuthFs { inode_table: Mutex::new(inode_table), root_entries, max_write }
+        AuthFs { inode_table: Mutex::new(inode_table), root_entries }
     }
 
     /// Handles the file associated with `inode` if found. This function returns whatever
@@ -258,7 +262,7 @@
     type DirIter = EmptyDirectoryIterator;
 
     fn max_buffer_size(&self) -> u32 {
-        self.max_write
+        MAX_WRITE_BYTES
     }
 
     fn init(&self, _capable: FsOptions) -> io::Result<FsOptions> {
@@ -590,8 +594,6 @@
     mountpoint: &Path,
     extra_options: &Option<String>,
 ) -> Result<(), fuse::Error> {
-    let max_read: u32 = 65536;
-    let max_write: u32 = 65536;
     let dev_fuse = OpenOptions::new()
         .read(true)
         .write(true)
@@ -604,7 +606,7 @@
         MountOption::AllowOther,
         MountOption::UserId(0),
         MountOption::GroupId(0),
-        MountOption::MaxRead(max_read),
+        MountOption::MaxRead(MAX_READ_BYTES),
     ];
     if let Some(value) = extra_options {
         mount_options.push(MountOption::Extra(value));
@@ -615,9 +617,9 @@
 
     fuse::worker::start_message_loop(
         dev_fuse,
-        max_write,
-        max_read,
-        AuthFs::new(root_entries, max_write),
+        MAX_WRITE_BYTES,
+        MAX_READ_BYTES,
+        AuthFs::new(root_entries),
     )
 }
 
