Age | Commit message (Collapse) | Author |
|
Every single syscall arg producing a warning is just noisy.
Change-Id: I339260886110e2982217ebbf9d29cb1cf91c747c
|
|
We separate type-based parsing of syscall arguments from more detailed
validation based on multiple parameters or on specific values.
The former is implemented with a macro that takes syscall signatures
and generates the relevant enum variant and parsing code.
Co-authored-by: edef <edef@unfathomable.blue>
Change-Id: I7e334d3e128e7b1461bfd6fae7c8ec5dd6ada0a8
|
|
Same bug as Ied63822001c8700fc71c89ec16d18036fbc33972, hiding missing
behaviour around dirfd. newfstatat(AT_FDCWD, path, …) is used, as is
newfstatat(fd, "", …).
Change-Id: I03b9dc5118d7a47514abef82c4a577e8362fbb4d
|
|
Our conversion always mangled it, *and* our comparison was inverted,
so both bugs remained hidden.
Change-Id: Ied63822001c8700fc71c89ec16d18036fbc33972
|
|
The fourth argument is passed in r10, not rcx, which is merely
clobbered by syscalls.
Change-Id: I0c7210c621f6955deccf21348ce6f495424555cc
|
|
Change-Id: I9ef820d2c22d54c6d8d6b259c2eea3f27d6459ac
|
|
Shuffling 3k around on the stack doesn't make anyone happy.
Change-Id: I444fc22267380d9b99ca63ca148b9a9e85238b5a
|
|
With this, minitrace has all the syscalls needed to run cc1.
Change-Id: Iaeef58769f69d64e192af2270eb520e891daec94
|
|
We were accidentally grabbing things from the prelude module already,
and this is the cleaner fix.
Change-Id: I2c6b669164df11f467eae495d109e096eb267b59
|
|
A little more explicit, and a bit more readable.
Change-Id: Id462c46236e1de547aabd36409260bd1c99f6f88
|
|
We haven't picked a license for our web content yet, so this is
LicenseRef-NONE for now.
Change-Id: Iabfc35860cb8ad0025624161214b1cbb6574e0c5
|
|
fusermount(1) gets shadowed by pkgs.fuse, but we actually need the
SUID-root one in the system PATH. This adds a wrapper script that
hunts down a SUID-root binary from PATH.
Change-Id: Icc5c6789d7b74bf8f6e3c50529333eb6b894527f
|
|
Change-Id: I8329f14bddaaa2d141e82c087821e4602bd1259a
|
|
Change-Id: I6c4d471b2840613d30ee95efe14547f2f9c0db6b
|
|
Change-Id: I0710d80e34bcad1d4b1406731f2d790a0e6972f4
|
|
Node::find would walk the tree all the way down and to the right if
given an out of bounds index. This doesn't affect the return value
(None), but it does waste some cycles walking down all the way to
the deepest rightmost leaf.
Change-Id: Ic2f72aa96291a25819fc6c3c2f060fe0182a7663
|
|
Change-Id: I319a2de0da0ff71f0f337e5a17ef199f23254b11
|
|
A single linear array does everything we need here, since we don't
actually use the cheap writes the BTreeMaps would permit us, and we
save ourselves the hassle of maintaining two parallel lookup structures.
Change-Id: I418b0aaa7a3191fab3195f36f2c68ac0f5f0382b
|
|
Change-Id: I8a928b57ecc81bea31d757e73b9ece9474628db4
|
|
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
|
|
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
|
|
This replaces the tuples with a DirectoryEntry struct.
Change-Id: I42a49fee03f7abfac9143c48106ebeb964814ca9
|
|
Change-Id: I2c9b2a15ac066ec2295d54665afd301f396efdc1
|
|
Previously, the CLI took Directory protobufs as input or wrote them as
output. Now we just deal in store hashes.
Change-Id: I5e0f0f33929ede43d971080c33bdb865f1832b2e
|
|
These decode digests to and from zbase32 for user-facing uses.
Change-Id: Ibd2db960044a97812d18d1a3c107521d78bd7f24
|
|
stdlib code seems to place these before the blocks,
so let's copy their style.
Change-Id: Ic77ed43bc8c6807c5ddb126e624f263f8bca5b66
|
|
This changes it from building an implicit top-level directory
containing all its args, to simply accepting a directory.
Change-Id: Iaf00e07d8568367b9eb27f365e8a2eaac3576974
|
|
Change-Id: I8e976279bd7aaaaf325129dc5c68a6ca5c750dc6
|
|
`add` takes about 10 seconds to run on a full LLVM tree, unless it
were to spend 4 minutes mostly waiting for a series of tiny fsyncs.
It did.
Change-Id: I492604bae68e3472f8626a112a33d023947e0e86
|
|
Change-Id: Ic410619a6115a7059b79593c6fade38236d4e8c1
|
|
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
|
|
This drops the manual `len <= MIN_CHUNK_SIZE` check, and instead
combines it into acquiring the to-be-scanned chunk.
The pointer-based design doesn't need the iterator to be enumerated
from the start of the buffer, so we don't need to use take/skip.
Throughput improves about 5%.
Change-Id: Ic430c7afde68bf1acfba1a2137a0b8ac064176ea
|
|
While `const fn` isn't permitted float computation, regular `const` is.
This deals with LLVM's reluctance to inline discriminator_from_average,
without forcing us to hardcode a magic number.
Change-Id: Ibdbfa4c733468517a2feff1ec0deedd1d9b70d47
|
|
We already check for `self.buffer.len() <= MIN_CHUNK_SIZE`, but LLVM
doesn't seem to notice. This boosts throughput by 35%.
Change-Id: I1a0e07d276dcc285f8dec3149a629cb6e865c286
|
|
Change-Id: I4fed55703cd02833f377ed0bbc659f3fcfdb949f
|
|
This improves performance by ~12%.
Change-Id: I5612b624da77b138fcfb44cbb439b0106580ed70
|
|
This improves performance by ~17%. I had *expected* that rustc would
have reduce it to a constant already, but alas.
Change-Id: I5c15fe90244da64498d2d6562262db58242ffb24
|
|
Performance hovers around 300MiB/s on my machine.
Change-Id: I387ccbf065c0b667824ede0675e6a295722f6d4b
|
|
Change-Id: I7f7c5556dda64f0055f1b6d2da37c36b5c684092
|
|
Change-Id: Ib5a0bc2fb5b725dfe1f7f4557838529711407203
|
|
Full test coverage for fossil/chunker! :)
Change-Id: I0436a266220bbed6d85c291dcca827d1770294dd
|
|
We never actually use this directly, and the resulting branch is test
coverage noise.
Change-Id: Id32b056ca0cd57965d829085d768012e5a9e05ce
|
|
Full test coverage for Chunker::next!
Change-Id: I4f3dbad7e0a56f46d5714e0dd8e07f00ce255928
|
|
Free test coverage win! :)
Change-Id: I9bab30e0f0da2810c770cbd8ba5603f0eb2b28e7
|
|
Change-Id: Ia5adb5a9056fd0e9ddcd8667c56129219b9d6f52
|
|
This ensures that MIN_CHUNK_SIZE-sized chunks can actually be emitted,
and adds tests for both MIN_CHUNK_SIZE and MAX_CHUNK_SIZE chunks.
The behaviour for all cases now verifiably matches casync.
Change-Id: Ie0bfaf50ec02658069da83ebb30210e6e1963de6
|
|
This takes up 80% less vertical space for something that isn't readable
to humans to begin with.
Change-Id: I04aa27755f0b8d6cdaa83d766f8bf0ecbe3b7a46
|
|
Change-Id: I7eb02482772f48ca9f486f514b89652a9c5730cd
|
|
sled doesn't actually promise not to eat your data until you invoke
flush. This is observable under normal circumstances as add_path
occasionally just not committing anything to the store.
While we're at it, ensure we're syncing the chunks file data to disk,
so the database *might* actually be consistent. We're not going for
full crash-correctness yet, mostly for performance and complexity
reasons.
Change-Id: I6cc69a013dc18cd50df26e73801b185de596565c
|
|
This implements casync-style content-defined chunking and deduplication.
Change-Id: I42a9b98e1140bed462a5ae1e0aba508bebc9fa0e
|