summary refs log tree commit diff
path: root/ripple/fossil/src/bin/mount.rs
AgeCommit message (Collapse)Author
2022-05-03ripple/fossil: handle missing blobs more gracefullyedef
Change-Id: I8a928b57ecc81bea31d757e73b9ece9474628db4
2022-05-03ripple/fossil/mount: expose arbitrary directories by digestedef
This makes the filesystem more like eg /nix/store. ~/src/ripple> ./target/release/add fossil puma5z7rnb4tmnqk8ixgryobay9ifg8txh69635snkgx8dis6quo ~/src/ripple> ./target/release/mount & ~/src/ripple> ls mnt/puma5z7rnb4tmnqk8ixgryobay9ifg8txh69635snkgx8dis6quo benches build.rs Cargo.toml src Change-Id: Ic35f81ffec521f49ce2e4a414919e1ff717d7041
2022-05-03ripple/fossil/mount: make node references more flexibleedef
Essentially, memtree::Node becomes more of a NodeRef, and Node gets renamed to NodeBuf. This permits calling Node::find with an arbitrary owned Directory, without having to move it into the enum. Change-Id: I93838932a00f2e2073e3c7ddf7ce8d302ed4ed59
2022-05-03ripple/fossil/mount: memtree API cleanupedef
This replaces the tuples with a DirectoryEntry struct. Change-Id: I42a49fee03f7abfac9143c48106ebeb964814ca9
2022-05-03ripple/fossil: don't expose protobufs in the frontendedef
Previously, the CLI took Directory protobufs as input or wrote them as output. Now we just deal in store hashes. Change-Id: I5e0f0f33929ede43d971080c33bdb865f1832b2e
2022-05-03ripple/fossil: make store path configurableedef
Change-Id: Ic410619a6115a7059b79593c6fade38236d4e8c1
2022-05-03ripple/fossil: use clapedef
This adds clap to all our binaries. Only add currently takes any args, but previously, the others did not reject args as they should. Change-Id: I6257fb3b218c624ee0124f6ed7313a579db88c4c
2022-04-28ripple/fossil/mount: don't serve short readsedef
FUSE doesn't actually respect the usual read() contract, so this resulted in us serving truncated files. Change-Id: I8bdb0bd7f03162fb78774f3f84daeefc5ba5e3b1
2022-04-25ripple/fossil/mount: implement incremental file readsedef
Change-Id: Iae189c3107a6841bcbdd75bb57dde785f9548130
2022-04-24ripple/fossil/mount: implement stateful file handlesedef
This will primarily allow us to amortise metadata lookups. Change-Id: Ic92781bf1ded5af62f6e955322bb89623afb2061
2022-04-15ripple/fossil/mount: drop bmapedef
We'll never write a direct block-mapped filesystem, so this won't become relevant. Change-Id: I512ac44fc40f3969c2d54b93a1e2725628f46ed4
2022-04-15ripple/fossil/mount: move writing methods into their own sectionedef
Change-Id: Ia5b63f3be625c738c58a915bc46114cac7acc0a5
2022-04-15ripple/fossil/mount: correctly serve executable filesedef
Change-Id: I1bc7c0db7a0feeb5cb809e9382bf51816ec082c1
2022-04-15ripple/fossil/mount: rm rmdir stubedef
rmdir should be rejected with EROFS. For some reason, the initial EROFS pass missed this. Change-Id: Ib8d7b21b42fcf52e696041aa0ba41be5ab20d326
2022-04-15ripple/fossil/mount: unbreak rustfmtedef
Apparently, rustfmt bugs out if you mix triple-slash and double-slash comments on a struct literal. Change-Id: I609ac42f86875b48947766fa9d67af7ef8997b9b
2022-04-12ripple/fossil/mount: outline node handling logic from file_attr callersedef
Change-Id: I162b542d31a8120792e72957e6ffaf1bd94d9676
2022-04-12ripple/fossil/mount: support symlinksedef
Change-Id: Ic6cbb1dcee766e30140a1b027d6a80f5768865f5
2022-04-12ripple/fossil/mount: formatting nitedef
Change-Id: Iaefd449224e8799c0f304442d54309c4aa27f874
2022-04-12ripple/fossil/mount: serve an in-memory filesystem treeedef
Change-Id: I92073aae32bcf603799b83717635a13edbbef190
2022-04-11ripple/fossil/mount: serve a small, static filesystemedef
Serve up an entirely hardcoded minimal filesystem tree, so we can see most of the FUSE plumbing working already. Change-Id: I13c4b534c8dd159d2d2e177497b33f1bec3849ad
2022-04-11ripple/fossil/mount: stub out anything we don't want to implementedef
Change-Id: I7c2f940a411346230835f1befc5d4fe384e2b67e
2022-04-11ripple/fossil/mount: initedef
Minimal no-op FUSE FS. Change-Id: If6549990a768acea5ac8c75399b71ac10db8a4c6