summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-01-16 22:45:53 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2024-01-24 17:36:11 -0500
commit38b8d01c4cf823d9804451eff5ec811c17b03408 (patch)
tree4ae8f519d79df5a7f8744ef217953f24c9d5ba09 /c_src
parent7717a439cffdd32808131ee9837e6c8a8a1972fc (diff)
Update bcachefs sources to 481b5f343248 bcachefs: Better error messages for missing inodes in fsck
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src')
-rw-r--r--c_src/cmd_dump.c7
-rw-r--r--c_src/cmd_format.c2
-rw-r--r--c_src/cmd_fs.c12
-rw-r--r--c_src/cmd_migrate.c9
-rw-r--r--c_src/libbcachefs.c3
-rw-r--r--c_src/libbcachefs.h1
-rw-r--r--c_src/tools-util.c5
7 files changed, 26 insertions, 13 deletions
diff --git a/c_src/cmd_dump.c b/c_src/cmd_dump.c
index 51cc876b..0ffaf98d 100644
--- a/c_src/cmd_dump.c
+++ b/c_src/cmd_dump.c
@@ -10,6 +10,7 @@
#include "libbcachefs/bcachefs.h"
#include "libbcachefs/btree_cache.h"
+#include "libbcachefs/btree_io.h"
#include "libbcachefs/btree_iter.h"
#include "libbcachefs/error.h"
#include "libbcachefs/extents.h"
@@ -76,7 +77,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd,
if (ptr->dev == ca->dev_idx)
range_add(&data,
ptr->offset << 9,
- btree_bytes(c));
+ btree_ptr_sectors_written(&b->key));
}
}
@@ -91,7 +92,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd,
if (ptr->dev == ca->dev_idx)
range_add(&data,
ptr->offset << 9,
- btree_bytes(c));
+ btree_ptr_sectors_written(&b->key));
}
bch2_trans_iter_exit(trans, &iter);
@@ -99,7 +100,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd,
}
qcow2_write_image(ca->disk_sb.bdev->bd_fd, fd, &data,
- max_t(unsigned, btree_bytes(c) / 8, block_bytes(c)));
+ max_t(unsigned, c->opts.btree_node_size / 8, block_bytes(c)));
darray_exit(&data);
}
diff --git a/c_src/cmd_format.c b/c_src/cmd_format.c
index 45c44e32..6b77763e 100644
--- a/c_src/cmd_format.c
+++ b/c_src/cmd_format.c
@@ -188,7 +188,7 @@ int cmd_format(int argc, char *argv[])
case O_data_allowed:
dev_opts.data_allowed =
read_flag_list_or_die(optarg,
- bch2_data_types, "data type");
+ __bch2_data_types, "data type");
unconsumed_dev_option = true;
break;
case O_durability:
diff --git a/c_src/cmd_fs.c b/c_src/cmd_fs.c
index 67c38af6..1a5d144b 100644
--- a/c_src/cmd_fs.c
+++ b/c_src/cmd_fs.c
@@ -5,8 +5,10 @@
#include <uuid/uuid.h>
#include "linux/sort.h"
+#include "linux/rcupdate.h"
#include "libbcachefs/bcachefs_ioctl.h"
+#include "libbcachefs/buckets.h"
#include "libbcachefs/darray.h"
#include "libbcachefs/opts.h"
#include "libbcachefs/super-io.h"
@@ -15,11 +17,12 @@
#include "libbcachefs.h"
static void __dev_usage_type_to_text(struct printbuf *out,
- const char *type,
+ enum bch_data_type type,
unsigned bucket_size,
u64 buckets, u64 sectors, u64 frag)
{
- prt_printf(out, "%s:", type);
+ bch2_prt_data_type(out, type);
+ prt_char(out, ':');
prt_tab(out);
prt_units_u64(out, sectors << 9);
@@ -51,7 +54,7 @@ static void dev_usage_type_to_text(struct printbuf *out,
sectors = u->d[type].sectors;
}
- __dev_usage_type_to_text(out, bch2_data_types[type],
+ __dev_usage_type_to_text(out, type,
u->bucket_size,
u->d[type].buckets,
sectors,
@@ -153,7 +156,8 @@ static void replicas_usage_to_text(struct printbuf *out,
*d++ = ']';
*d++ = '\0';
- prt_printf(out, "%s: ", bch2_data_types[r->r.data_type]);
+ bch2_prt_data_type(out, r->r.data_type);
+ prt_char(out, ':');
prt_tab(out);
prt_printf(out, "%u/%u ", r->r.nr_required, r->r.nr_devs);
diff --git a/c_src/cmd_migrate.c b/c_src/cmd_migrate.c
index ea32e4ee..1c7cc929 100644
--- a/c_src/cmd_migrate.c
+++ b/c_src/cmd_migrate.c
@@ -676,7 +676,12 @@ static int migrate_fs(const char *fs_path,
struct dev_opts dev = dev_opts_default();
dev.path = dev_t_to_path(stat.st_dev);
- dev.bdev = blkdev_get_by_path(dev.path, BLK_OPEN_READ|BLK_OPEN_WRITE, &dev, NULL);
+ dev.handle = bdev_open_by_path(dev.path, BLK_OPEN_READ|BLK_OPEN_WRITE, &dev, NULL);
+
+ int ret = PTR_ERR_OR_ZERO(dev.handle);
+ if (ret < 0)
+ die("Error opening device to format %s: %s", dev.path, strerror(-ret));
+ dev.bdev = dev.handle->bdev;
opt_set(fs_opts, block_size, get_blocksize(dev.bdev->bd_fd));
@@ -722,7 +727,7 @@ static int migrate_fs(const char *fs_path,
mark_unreserved_space(c, extents);
- int ret = bch2_fs_start(c);
+ ret = bch2_fs_start(c);
if (ret)
die("Error starting new filesystem: %s", bch2_err_str(ret));
diff --git a/c_src/libbcachefs.c b/c_src/libbcachefs.c
index ef4cc718..703a0eca 100644
--- a/c_src/libbcachefs.c
+++ b/c_src/libbcachefs.c
@@ -20,6 +20,7 @@
#include "crypto.h"
#include "libbcachefs/bcachefs_format.h"
#include "libbcachefs/btree_cache.h"
+#include "libbcachefs/buckets.h"
#include "libbcachefs/checksum.h"
#include "libbcachefs/disk_groups.h"
#include "libbcachefs/journal_seq_blacklist.h"
@@ -531,7 +532,7 @@ int bchu_data(struct bchfs_handle fs, struct bch_ioctl_data cmd)
e.p.sectors_total
? e.p.sectors_done * 100 / e.p.sectors_total
: 0,
- bch2_data_types[e.p.data_type]);
+ bch2_data_type_str(e.p.data_type));
switch (e.p.data_type) {
case BCH_DATA_btree:
diff --git a/c_src/libbcachefs.h b/c_src/libbcachefs.h
index b189a208..739783f0 100644
--- a/c_src/libbcachefs.h
+++ b/c_src/libbcachefs.h
@@ -52,6 +52,7 @@ static inline struct format_opts format_opts_default()
}
struct dev_opts {
+ struct bdev_handle *handle;
struct block_device *bdev;
char *path;
u64 size; /* bytes*/
diff --git a/c_src/tools-util.c b/c_src/tools-util.c
index a1bcd8eb..c0b6852a 100644
--- a/c_src/tools-util.c
+++ b/c_src/tools-util.c
@@ -189,12 +189,13 @@ int open_for_format(struct dev_opts *dev, bool force)
const char *fs_type = NULL, *fs_label = NULL;
size_t fs_type_len, fs_label_len;
- dev->bdev = blkdev_get_by_path(dev->path,
+ dev->handle = bdev_open_by_path(dev->path,
BLK_OPEN_READ|BLK_OPEN_WRITE|BLK_OPEN_EXCL|BLK_OPEN_BUFFERED,
dev, NULL);
- int ret = PTR_ERR_OR_ZERO(dev->bdev);
+ int ret = PTR_ERR_OR_ZERO(dev->handle);
if (ret < 0)
die("Error opening device to format %s: %s", dev->path, strerror(-ret));
+ dev->bdev = dev->handle->bdev;
if (!(pr = blkid_new_probe()))
die("blkid error 1");