summaryrefslogtreecommitdiff
path: root/rust-src/src
AgeCommit message (Collapse)Author
2024-01-16move Rust sources to top level, C sources into c_srcThomas Bertschinger
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>
2024-01-16remove library from bcachefs-tools Rust packageThomas Bertschinger
When bcachefs was a C program that had some functions implemented in Rust, it was necessary to make a static library containing the Rust functions available for the C program to link. Now that bcachefs is a Rust program, that library is no longer needed. Instead, the Rust executable links in libbachefs.a. This patch updates the crate structure to reflect that. The command functions are moved into their own module. There could be a need to create a "libbachefs-tools" library in the future that exposes an API for bcachefs functionality to other userspace programs. That will be a different, external API as opposed to the previous library functions which were an internal API for the bcachefs tool itself. Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-01-16convert main() from C to RustThomas Bertschinger
This moves the main() function from C to Rust. It also updates the name of the Rust package from "bcachefs-rust" to "bcachefs-tools". Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-01-15cmd_mount: Use noxcl for opening block devicesv1.4.1Kent Overstreet
We're only reading the superblocks, no need for O_EXCL - and this fixes mounts failing because we're still holding the devices open. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-01-12rust: remove dependency on itertoolsFaidon Liambotis
The only use for itertools is in parse_mount_options() where we take a vector, convert it to iterator and then join it. Instead, we can join the vector directly. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2024-01-07create common entry point for Rust commandsThomas Bertschinger
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>
2023-12-27fix cmd_list for new nochanges semanticsKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-11-23rust: fix MSRV buildAlexander Fougner
- downgrade clap_completion to 4.3.x (1.65 compatible) - dependency updates - remove unused imports Signed-off-by: Alexander Fougner <fougner89@gmail.com>
2023-11-12rust keylocation add none variant and implement ValueEnumFinn Behrens
This enables a possible values help in the clap help text. Signed-Off-By: Finn Behrens <me@kloenk.de> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-11-10rust-cli: add help on `list` commandZhai Can
2023-11-10add command to generate Rust-part CLI completionsZhai Can
2023-11-08rust: mount: use libc::c_ulong for flagsNicholas Sielicki
libc proper treats mount flags as an unsigned long, which is usually u64, except when it isn't. When preparing mount flags, use the libc::c_ulong type instead of u64 to allow for this. This fixes compiling this file under armv7l. Signed-off-by: Nicholas Sielicki <linux@opensource.nslick.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-09-08cmd_mount: request passphrase if the existing key is revokedColin Gillespie
Signed-off-by: Colin Gillespie <colin@cgillespie.xyz>
2023-09-03cmd_mount: Fix test-only mount pathChristopher James Halse Rogers
The comman line help claims that `bcachefs mount <DEV>` without a mount point will do a dry-run mount - all the steps required to mount the fs, but without actually doing the final real mount. Make the code actually do this, rather than complain that you haven't supplied a mountpoint if you don't provide a mountpoint Signed-off-by: Christopher James Halse Rogers <raof@ubuntu.com>
2023-08-12cmd_mount: use the correct keyring key typeColin Gillespie
Mount is checking for and adding encryption keys using the logon key type instead of the user key type. This was causing it to not be able to unlock volumes on its own, and ask for a passphrase on already unlocked volumes. Signed-off-by: Colin Gillespie <colin@cgillespie.xyz>
2023-08-10cmd_mount: don't return 0 on mount failureLinus Heckemann
Signed-off-by: Linus Heckemann <git@sphalerite.org>
2023-07-15Update bcachefs sources to e14d7c7195 bcachefs: Compression levelsKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-06-15fix reading keys from non-tty inputsJörg Thalheim
read_password_from_tty doesn't have a fallback if input is a pipe. This makes scripting and integration testing harder. Noticed while updating our nixos integration test. Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
2023-04-26feat(cmd_mount): Add support for magic keyword `OLD_BLKID_UUID`TruongSinh Tran-Nguyen
This commit enhances mount sub command by allowing it to accept `OLD_BLKID_UUID=xxx` as the device, enabling whole fs mounting without relying on colon-separated devices. Using colon-separated devices in fstab is discouraged due to potential device reference issues after reboot. Additionally, using `UUID=xxx` in fstab or with `mount -t bcachefs` is currently infeasible as it depends on blkid, which prior to v2.39, does not recognize bcachefs. This update enables mounting via fstab using `OLD_BLKID_UUID=xxx` as obtained from `bcachefs show-super` "External UUID". Signed-off-by: TruongSinh Tran-Nguyen <i@truongsinh.pro>
2023-04-26chore: logger for idiomatic style and expanded logging levelsTruongSinh Tran-Nguyen
Improve the Rust logger by adhering to idiomatic Rust conventions and incorporating additional logging levels: warn, debug, and trace. Signed-off-by: TruongSinh Tran-Nguyen <i@truongsinh.pro>
2023-03-06cmd_list.rs: Finish list modes, delete cmd_list.cKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-03-04rust: Implement BtreeNodeIterKent Overstreet
This implements BtreeNodeIter, and adds it to cmd_list.rs - the next step in having a full replacement for cmd_list.c Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-28rust: Filesystem options now supportedKent Overstreet
This implements opt_set!(), which works exactly the same as the C version and allows filesystem options to be specified in Rust code. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-28rust: BkeySCKent Overstreet
Implement a rust equivalent to bkey_s_c, which uses references with the correct lifetimes: now cmd_list.rs doesn't need unsafe. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-27rust: BtreeIterFlagsKent Overstreet
This adds a new wrapper type for btree iterator flags. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-27Rust: Start of cmd_list rewriteKent Overstreet
This is a _very_ preliminary rewrite of the cmd_list tool in rust, which is intended to be a testing ground for a safe interface in Rust to the core btree interface. This adds rust wrappers for: bch_fs: provides bch2_fs_open(), bch2_fs_stop btree_trans: provides bch2_trans_init(), bch2_trans_exit() btree_iter: provides peek, peek_and_restart, advance bch_errcode: implements Display (wraps bch2_err_str()) bpos: implements Ord (wraps bpos_cmp()) bkey_s_c: implements Display (wraps bch2_bkey_val_to_text()) and other assorted types. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-22Made the -k option for mount.bcachefs default to ask, without messing up ↵Westly Ward
formatting Signed-off-by: Westly Ward <sonicrules1234@gmail.com>
2023-02-21rust-src: Clean up read_super bindingsKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-21More rust improvementsKent Overstreet
- passing of arguments from c -> rust code now works correctly - 'bcachefs mount' now handles being passed a device or devices Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
2023-02-21Rust now integrated into bcachefs binaryKent Overstreet
Rust is now required for building the bcachefs tool, and rust code is now fully integrated with the C codebase - meaning it is possible to call back and forth. The mount helper is now a subcommand, 'mount.bcachefs' is now a small shell wrapper that invokes 'bcachefs mount'. This will make it easier to start rewriting other subcommands in rust, and eventually the whole command line interface. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>