bcachefs-tools/rust-src
Thomas Bertschinger 9a9af6e9e6 create common entry point for Rust commands
The bcachefs sub-commands that are implemented in Rust (completions,
list, and mount) had separate entrypoints and thus had some differences
in behavior.

This introduces a common entry point for the Rust sub-commands. This
reduces duplicate boilerplate code like parsing argv and setting up
logging, and will facilitate converting more sub-commands to Rust in
the future.

An immediate benefit is that this fixes an issue with `bcachefs list`
not reporting errors:

before:

$ bcachefs list /dev/typo
$ echo $?
0

after:

$ bcachefs list /dev/typo
ERROR - bcachefs_rust::cmd_list: Fatal error: "No such file or directory"
$ echo $?
1

Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-01-07 21:38:31 -05:00
..
bch_bindgen Silence a few rust build warnings 2023-12-21 19:49:55 -05:00
src create common entry point for Rust commands 2024-01-07 21:38:31 -05:00
.gitignore
Cargo.lock rust: fix MSRV build 2023-11-23 19:29:43 +01:00
Cargo.toml rust: fix MSRV build 2023-11-23 19:29:43 +01:00
README.md
rustfmt.toml

Usage

bcachefs-mount 0.1.0
Mount a bcachefs filesystem by its UUID

USAGE:
    bcachefs-mount [OPTIONS] <uuid> <mountpoint>

FLAGS:
    -h, --help       
            Prints help information

    -V, --version    
            Prints version information


OPTIONS:
    -o <options>                 
            Mount options [default: ]

    -p, --password <password>    
            Where the password would be loaded from.
            
            Possible values are: "fail" - don't ask for password, fail if filesystem is encrypted; "wait" - wait for
            password to become available before mounting; "ask" -  prompt the user for password; [default: fail]

ARGS:
    <uuid>          
            External UUID of the bcachefs filesystem

    <mountpoint>    
            Where the filesystem should be mounted

Caveats

  • --password ask is not yet implemented, but you can use --password wait, and load the key with bcachefs unlock.

Build

$ git submodule update --init --recursive
$ cargo build --release

Binary will be built in target/release/bcachefs-mount

Dependencies:

  • rust
  • blkid
  • uuid
  • liburcu
  • libsodium
  • zlib
  • liblz4
  • libzstd
  • libkeyutils