While adding scrub to data in last commit I noticed that the help output
where all over the place, both "physically" on the console and also
things like inconsistent case and newlines before "Report bugs to ...",
so I decided to fix all that up.
This is only a workaround for the superblock writing process always reading back the
first sb in the layout and checking its sequence number.
Zeroing it out ensures a harmless warning instead of an error.
Signed-off-by: Nikita Ofitserov <himikof@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
There is no reason to run a fsck there for common use, as the FS is now
modified only by calling consistency-preserving APIs.
Also switch the debug-only fsck to nochanges mode for easier debugging.
Signed-off-by: Nikita Ofitserov <himikof@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Ensure that the space for the future default sb layout is not used during the migration process.
Signed-off-by: Nikita Ofitserov <himikof@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Now the FS is first started RW, then new superblock is written and metadata updated.
This ensures that all recovery/upgrades/downgrades are performed at the beginning.
Signed-off-by: Nikita Ofitserov <himikof@gmail.com>
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>
Migrate now works: there is an inconsequential free space inconsistency
after marking the new superblock (in migrate_superblock), which we're
hacking around with a fsck.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
bucket size now takes into account system memory and amount of memory
required to fsck: on very large filesystems it will automatically scale
up bucket size to ensure we can fsck.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
More work to regularize device options, with common command line
parsing - like other options.
This fixes an assortment of little nits: buggyness with the discard
option, device state (and others) can now be specied at device add time,
and is a decent cleanup.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Add a new source command line argument which specifies the directory
tree that will be copied onto the newly formatted bcachefs filesystem.
This commit also fixes an issue in copy_link where uninitialized data is
copied into the symlink because of a round_up of the buffer size.
Signed-off-by: Ariel Miculas <ariel.miculas@gmail.com>
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>