summary refs log tree commit diff
path: root/ripple/fossil/src/bin/mount.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ripple/fossil/src/bin/mount.rs')
-rw-r--r--ripple/fossil/src/bin/mount.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/ripple/fossil/src/bin/mount.rs b/ripple/fossil/src/bin/mount.rs
index 846e543..9e0e8aa 100644
--- a/ripple/fossil/src/bin/mount.rs
+++ b/ripple/fossil/src/bin/mount.rs
@@ -132,7 +132,7 @@ impl Filesystem {
 				(inode, &self.roots[&inode])
 			}
 			hash_map::Entry::Vacant(e) => {
-				let root = memtree::load_root(&self.store, ident);
+				let root = memtree::load_root(&self.store, ident)?;
 				let inode = self.inode_tail;
 				self.inode_tail += inode + 1 + root.size() as u64;
 
@@ -241,7 +241,10 @@ impl fuser::Filesystem for Filesystem {
 	fn open(&mut self, _req: &fuser::Request<'_>, ino: u64, _flags: i32, reply: fuser::ReplyOpen) {
 		match self.find(ino) {
 			Some(memtree::Node::File(f)) => {
-				let contents = self.store.open_blob(f.ident);
+				let contents = self
+					.store
+					.open_blob(f.ident)
+					.expect("file points at missing blob");
 				let fh = Box::new(Handle::File {
 					contents: RefCell::new(contents),
 				});
@@ -823,9 +826,9 @@ mod memtree {
 		}
 	}
 
-	pub fn load_root(store: &fossil::Store, ident: Digest) -> Directory {
+	pub fn load_root(store: &fossil::Store, ident: Digest) -> Option<Directory> {
 		let pb = {
-			let bytes = store.read_blob(ident);
+			let bytes = store.read_blob(ident)?;
 			store::Directory::decode(&*bytes).unwrap()
 		};
 		let mut children = BTreeMap::new();
@@ -836,7 +839,7 @@ mod memtree {
 			size: _,
 		} in pb.directories
 		{
-			let child = load_root(store, fossil::digest_from_bytes(&r#ref));
+			let child = load_root(store, fossil::digest_from_bytes(&r#ref))?;
 			children.insert(name, NodeBuf::Directory(child));
 		}
 
@@ -859,7 +862,7 @@ mod memtree {
 			children.insert(name, NodeBuf::Link { target });
 		}
 
-		Directory::from_children(children)
+		Some(Directory::from_children(children))
 	}
 
 	impl Directory {