summary refs log tree commit diff
path: root/ripple
AgeCommit message (Collapse)Author
2022-04-24ripple/fossil/mount: implement stateful file handlesedef
This will primarily allow us to amortise metadata lookups. Change-Id: Ic92781bf1ded5af62f6e955322bb89623afb2061
2022-04-24ripple/fossil: implement io::Seek for RawBlobedef
Change-Id: I625530fe2f4db89be5889e46f0a5ed50727c8cd1
2022-04-23ripple/fossil: implement a more lightweight blob store backendedef
The sled chunk store works fine, but has pretty awful performance, since sled just doesn't make a particularly good large blob store. This change replaces it with a file-based store using sled purely as a metadata store. Adding LLVM's source tree takes about 120s before, and about 15s after. Change-Id: I5fb22ea79a006fa6bcf5351921038f57f2484112
2022-04-20ripple/fossil: prefer anyhow::Result over io::Resultedef
Change-Id: I4a94b84ef456b427422757a899fdce6198fd01a1
2022-04-19ripple/fossil: use bao to one-shot verify hashesedef
Change-Id: I77ace8ee9f69ccb92afaa0a41d69538d28f11583
2022-04-19ripple: upgrade blake3 (0.3.8 -> 1.3.1)edef
Change-Id: I75f2e0ff57e09b026fd1aaaeb86b041ddb8238f4
2022-04-19ripple/fossil: prepare for seekable, streaming blob readingedef
This implements blob reading in terms of RawBlob, a fairly naive streaming blob reader. For now, we still only use it for simple one-shot reads. Change-Id: Iecd4f926412b474ca6f3dde8c6055c0c3781301f
2022-04-19ripple/fossil: add read_write testedef
Change-Id: I88d13d9dd7055b8370706df7b3dd4479a0891399
2022-04-18ripple/fossil: use blake3::CHUNK_LEN as chunk sizeV
This will pave the way for BLAKE3 verified streaming, so we won't have to read objects into memory in their entirety. Change-Id: Ic68dee2ad81448db4969b8c423f0876f0e0272e0
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: unflagedef
Change-Id: I9128e7d5b6dd7205cf0f9c398e4c94306b044046
2022-04-12ripple/fossil/mount: serve an in-memory filesystem treeedef
Change-Id: I92073aae32bcf603799b83717635a13edbbef190
2022-04-12ripple/fossil: correctly handle the empty blobedef
Change-Id: I6a91a998063e70ec92e8239361a37e3f8033b049
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
2022-04-11ripple/fossil: don't .ok().expect()edef
Result::expect already does the right thing, and discards less information. Change-Id: I2d2fbd1981d4c3b84bb287fb4d79d985f8e465c9
2022-04-11ripple/fossil: track file sizeedef
Change-Id: I424bd482d82471255f2ce2f17bb0b5c6eae3b77a
2022-04-10ripple/fossil: split out FileRef/DirectoryRefedef
Change-Id: I649c89ccc4e7fbc3ce42c86f6653d59c07cf58a9
2022-04-10ripple/fossil: track transitive inode countedef
Change-Id: Ia5893bc64f58e3a6b17aa96fdd27b6b49ebf5fa5
2022-04-10ripple/fossil: just copy the slice refedef
Thanks, Clippy! Change-Id: I88e6b94b8edd415d1ed79c288a4677e2040dde77
2022-04-10ripple/fossil: use [T]::is_emptyedef
Thanks, Clippy! Change-Id: I9d8d154db76c49807262bb07f37aec0c17725739
2022-02-28ripple: bump Rust edition to 2021V
Change-Id: I25fde01a2eee6fd3affd7f069745c346eb3b19ff
2022-02-16ripple/minitrace: use CString::from_vec_with_nul for constructionV
New Rust version, fresh new APIs. Change-Id: I0983ea45a27ec25c16b1a7ff4dc828540ccd0b5f
2022-02-16ripple/nix: update sources.jsonV
It's been a while since we've done this, and there are some great new changes in the Rust compiler and standard library. As a bonus, rustfmt now features the `imports_granularity = "One"` variant, so we can use unmodified tooling again. Change-Id: I228e4e5919f53b6a77e07a5c99420936c89016c3
2022-02-08ripple/minitrace: clean up prlimit64 arg destructuringV
Change-Id: If54ca6c931c0f3c8d99a65aeca15385f1ef8ebf3
2022-02-08ripple/minitrace: clean up arch_prctl arg destructuringV
Change-Id: I403062ce3570eac201612dcf083a8c670380f6a8
2022-02-08ripple/minitrace: log newfstatat pathsV
Change-Id: Ieec434cdbddb45ab099bb9cf91dea1a135fd06ad
2022-02-08ripple/minitrace: log readlink pathsedef
Change-Id: Idd2b174e0805e1a255f6a9a5cb9868aa59aa332a
2022-02-08ripple/minitrace: clean up ioctl handlingV
TIOCGWINSZ was mistakenly listed as TCGETS, and parameter destructuring got cleaned up. Change-Id: I8dce783c50d34ab619cf7b05c9b705b5e11bc459
2022-02-08ripple/minitrace: log access(2) pathsedef
Co-authored-by: V <v@unfathomable.blue> Change-Id: I26603ca7de3ac4a21b64390e4fc3d9f44a6c172a
2022-02-08ripple/minitrace: consistently use .. for arg matchingedef
Change-Id: Iadaebe17f1362460bf5b7b5770da3b94afbca237
2022-02-08ripple/minitrace: clear child environment variablesedef
Change-Id: If55273931055ff9033aca2e274b6cf7b4a510ec2
2022-02-08ripple/minitrace: enforce openat flagsedef
Co-authored-by: V <v@unfathomable.blue> Change-Id: Id848249e6b4a3de612d298d434c59889ba93b300
2022-02-08ripple/minitrace: log openat pathsedef
Co-authored-by: V <v@unfathomable.blue> Change-Id: Idcb3c29c4761158be788511f5f4bdb3003edf909
2022-02-08ripple/minitrace: ensure openat calls use AT_FDCWD onlyedef
Co-authored-by: V <v@unfathomable.blue> Change-Id: I32ca1947fc9278bdee1b0a8acdc8d5d66b61d736
2022-02-07ripple/shell.nix: make cc1 available for minitrace testingedef
Change-Id: Ie88130942865aa73bbdd9a3ddd71d9f5ef5914ab
2022-02-07ripple/minitrace: use anyhow::Result unqualifiededef
Result<T, E> keeps the same meaning, so there's no need to qualify it. Change-Id: I22872860ff18e75c01be01e0d4c8030bfc4133bb
2022-02-03ripple/minitrace: don't permit tracee escape if the tracer diesedef
Change-Id: If2c0262b82e072a600f9b8dfe7efdf3556f0e16a
2022-02-03ripple/Cargo.lock: resyncedef
We should probably have a CI lint for this. Change-Id: Ibff833dd4e3a428b1c96aa659cfd046f7e177a23
2022-02-03ripple/minitrace: only disable ASLR in traceeedef
Change-Id: I6df0596ecc0ba9514c04339dbd80469880e30f4c
2022-02-03ripple/minitrace: take care of our own ptrace bringupedef
Change-Id: I2602d7bb751b6a7415832308843cb334b6f24aa2
2021-12-28ripple/minitrace: disable ASLRedef
Change-Id: I7e34fd965b46f33a38821bca196c8774206ee037