mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
cmd_fs_usage: Print out replica set durability
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
446ec6b092
commit
138397d892
25
cmd_fs.c
25
cmd_fs.c
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user