diff --git a/authfs/src/main.rs b/authfs/src/main.rs
index 432cfab..f6a2a56 100644
--- a/authfs/src/main.rs
+++ b/authfs/src/main.rs
@@ -29,7 +29,7 @@
 
 use anyhow::{bail, Context, Result};
 use log::error;
-use std::collections::BTreeMap;
+use std::collections::HashMap;
 use std::convert::TryInto;
 use std::path::PathBuf;
 use structopt::StructOpt;
@@ -44,7 +44,7 @@
 use auth::FakeAuthenticator;
 use file::{RemoteDirEditor, RemoteFileEditor, RemoteFileReader, RemoteMerkleTreeReader};
 use fsverity::{VerifiedFileEditor, VerifiedFileReader};
-use fusefs::{AuthFsEntry, Inode};
+use fusefs::AuthFsEntry;
 
 #[derive(StructOpt)]
 struct Args {
@@ -160,14 +160,14 @@
     Ok(AuthFsEntry::VerifiedNewDirectory { dir })
 }
 
-fn prepare_root_dir_entries(args: &Args) -> Result<BTreeMap<Inode, AuthFsEntry>> {
-    let mut root_entries = BTreeMap::new();
+fn prepare_root_dir_entries(args: &Args) -> Result<HashMap<PathBuf, AuthFsEntry>> {
+    let mut root_entries = HashMap::new();
 
     let service = file::get_rpc_binder_service(args.cid)?;
 
     for config in &args.remote_ro_file {
         root_entries.insert(
-            config.remote_fd.try_into()?,
+            remote_fd_to_path_buf(config.remote_fd),
             new_remote_verified_file_entry(
                 service.clone(),
                 config.remote_fd,
@@ -179,7 +179,7 @@
     for remote_fd in &args.remote_ro_file_unverified {
         let remote_fd = *remote_fd;
         root_entries.insert(
-            remote_fd.try_into()?,
+            remote_fd_to_path_buf(remote_fd),
             new_remote_unverified_file_entry(
                 service.clone(),
                 remote_fd,
@@ -191,7 +191,7 @@
     for remote_fd in &args.remote_new_rw_file {
         let remote_fd = *remote_fd;
         root_entries.insert(
-            remote_fd.try_into()?,
+            remote_fd_to_path_buf(remote_fd),
             new_remote_new_verified_file_entry(service.clone(), remote_fd)?,
         );
     }
@@ -199,7 +199,7 @@
     for remote_fd in &args.remote_new_rw_dir {
         let remote_fd = *remote_fd;
         root_entries.insert(
-            remote_fd.try_into()?,
+            remote_fd_to_path_buf(remote_fd),
             new_remote_new_verified_dir_entry(service.clone(), remote_fd)?,
         );
     }
@@ -207,6 +207,10 @@
     Ok(root_entries)
 }
 
+fn remote_fd_to_path_buf(fd: i32) -> PathBuf {
+    PathBuf::from(fd.to_string())
+}
+
 fn try_main() -> Result<()> {
     let args = Args::from_args();
 
