< 64k buckets don't work reliably anymore, we deadlock in the journal
when we try to write too big of a journal entry.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Make sure bucket size >= btree_node_size when adding a device, and
cmd_image_update needs to make sure the metadata device is big enough
for the minimum number of buckets.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Add an option for controlling whether we create a third redundant
superblock at the end of the device.
For image files that are going to immediately be resized, we want to
skip this.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Non power of two bucket sizes are allowed - but not preferred.
We were accidentally picking bucket sizes that weren't blocksize
aligned - ouch.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
- we can now correctly open by parsing sysfs, instead of falling back to
reading the superblock and grabbing the UUID
- non-UUID filesystem names now work
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
With single device mode we won't always show up in sysfs by UUID, but
the new VFS ioctl handles this nicely.
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>
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>
New tool for scanning for backup superblocks, to recover when the
primary superblock + sb layout have been overwritten.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Implement 'bcachefs data scrub', frontend for
BCH_IOCTL_DATA.BCH_DATA_OP_scrub.
Takes a path to a device, mountpoint, or filesystem uuid. Can be run on
a specific device by passing a device, or if run on a filesystem scrubs
all devices in parallel.
Metadata only scrubbing is supported via -m.
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>