cmd_fs_usage: Print out replica set durability

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2023-11-24 20:50:49 -05:00
parent 446ec6b092
commit 138397d892
3 changed files with 23 additions and 7 deletions

View File

@ -9,6 +9,7 @@
#include "libbcachefs/bcachefs_ioctl.h" #include "libbcachefs/bcachefs_ioctl.h"
#include "libbcachefs/darray.h" #include "libbcachefs/darray.h"
#include "libbcachefs/opts.h" #include "libbcachefs/opts.h"
#include "libbcachefs/super-io.h"
#include "cmds.h" #include "cmds.h"
#include "libbcachefs.h" #include "libbcachefs.h"
@ -122,18 +123,20 @@ static void replicas_usage_to_text(struct printbuf *out,
const struct bch_replicas_usage *r, const struct bch_replicas_usage *r,
dev_names *dev_names) dev_names *dev_names)
{ {
unsigned i;
if (!r->sectors) if (!r->sectors)
return; return;
char devs[4096], *d = devs; char devs[4096], *d = devs;
*d++ = '['; *d++ = '[';
for (i = 0; i < r->r.nr_devs; i++) { unsigned durability = 0;
for (unsigned i = 0; i < r->r.nr_devs; i++) {
unsigned dev_idx = r->r.devs[i]; unsigned dev_idx = r->r.devs[i];
struct dev_name *dev = dev_idx_to_name(dev_names, dev_idx); struct dev_name *dev = dev_idx_to_name(dev_names, dev_idx);
durability += dev->durability;
if (i) if (i)
*d++ = ' '; *d++ = ' ';
@ -150,6 +153,9 @@ static void replicas_usage_to_text(struct printbuf *out,
prt_printf(out, "%u/%u ", r->r.nr_required, r->r.nr_devs); prt_printf(out, "%u/%u ", r->r.nr_required, r->r.nr_devs);
prt_tab(out); prt_tab(out);
prt_printf(out, "%u ", durability);
prt_tab(out);
prt_printf(out, "%s ", devs); prt_printf(out, "%s ", devs);
prt_tab(out); prt_tab(out);
@ -204,20 +210,25 @@ static void fs_usage_to_text(struct printbuf *out, const char *path)
prt_newline(out); prt_newline(out);
printbuf_tabstops_reset(out); printbuf_tabstops_reset(out);
printbuf_tabstop_push(out, 16);
printbuf_tabstop_push(out, 16);
printbuf_tabstop_push(out, 18);
printbuf_tabstop_push(out, 18);
printbuf_tabstop_push(out, 16);
prt_str(out, "Data type"); prt_str(out, "Data type");
prt_tab(out); prt_tab(out);
printbuf_tabstop_push(out, 16);
prt_str(out, "Required/total"); prt_str(out, "Required/total");
prt_tab(out); prt_tab(out);
printbuf_tabstop_push(out, 14);
prt_str(out, "Durability");
prt_tab(out);
printbuf_tabstop_push(out, 14);
prt_str(out, "Devices"); prt_str(out, "Devices");
prt_newline(out); prt_newline(out);
printbuf_tabstop_push(out, 14);
for (i = 0; i < BCH_REPLICAS_MAX; i++) { for (i = 0; i < BCH_REPLICAS_MAX; i++) {
if (!u->persistent_reserved[i]) if (!u->persistent_reserved[i])
continue; continue;

View File

@ -728,6 +728,10 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs)
n.label = read_file_str(fs.sysfs_fd, label_attr); n.label = read_file_str(fs.sysfs_fd, label_attr);
free(label_attr); free(label_attr);
char *durability_attr = mprintf("dev-%u/durability", n.idx);
n.durability = read_file_u64(fs.sysfs_fd, durability_attr);
free(durability_attr);
darray_push(&devs, n); darray_push(&devs, n);
} }

View File

@ -242,6 +242,7 @@ struct dev_name {
char *dev; char *dev;
char *label; char *label;
uuid_t uuid; uuid_t uuid;
unsigned durability;
}; };
typedef DARRAY(struct dev_name) dev_names; typedef DARRAY(struct dev_name) dev_names;