If the specified path is a directory, we'll try to run online fsck on
the filesystem mounted at that path.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
The splice fd might have been closed, and a double-close here shouldn't
be a concern because we're not doing any interesting multithreaded
things and it's local to this function.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Add a helper to check for close errrors - especially bad file
descriptors, that can be a fun source of heisenbugs.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This needed an access() check, like the other uses, instead of exiting
if it can't be read.
Factor out a small common helper for this.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
We don't want users hitting this accidentally, and if needed for some
strange reason (it shouldn't be), it can still be specified via -o.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-a is used when called from system to mean "automatic invocation, run
check only if you think you need it".
Since we have self healing and online fsck, we never need run fsck
automatically at boot time.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
The error code is in errno, not the return value.
Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Add an environment variable that indicates we prefer to run bcachefs
code in the kernel, not userspace - this is for the test environment
where it's easier to debug kernel code.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
We need to check when stdin has been closed - otherwise we'll spin
because select() will return immediately.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
To avoid expensive version upgrades and downgrades - use the kernel
version of fsck when it's availale and a better match.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This moves the Rust sources out of rust_src/ and into the top level.
Running the bcachefs executable out of the development tree is now:
$ ./target/release/bcachefs command
or
$ cargo run --profile release -- command
instead of "./bcachefs command".
Building and installing is still:
$ make && make install
Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>