mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-03-10 00:00:04 +03:00
bcacheadm: fix status command
previously it wasn't properly looking through the list of member info in the cache that has the highest seq. Change-Id: I2a6ebf6bd0814055ec1247d0f4d79dab683115d3 Signed-off-by: Jacob Malevich <jam@daterainc.com>
This commit is contained in:
parent
c43d8cf683
commit
e977913cc8
12
bcache.c
12
bcache.c
@ -1236,18 +1236,6 @@ err:
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sb_state(struct cache_sb *sb, char *dev)
|
|
||||||
{
|
|
||||||
struct cache_member *m = ((struct cache_member *) sb->d) +
|
|
||||||
sb->nr_this_dev;
|
|
||||||
|
|
||||||
printf("device %s\n", dev);
|
|
||||||
printf("\tcache state\t%s\n", cache_state[CACHE_STATE(m)]);
|
|
||||||
printf("\tcache_tier\t%llu\n", CACHE_TIER(m));
|
|
||||||
printf("\tseq#: \t%llu\n", sb->seq);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
char *read_stat_dir(DIR *dir, char *stats_dir, char *stat_name, bool print_val)
|
char *read_stat_dir(DIR *dir, char *stats_dir, char *stat_name, bool print_val)
|
||||||
{
|
{
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
1
bcache.h
1
bcache.h
@ -69,7 +69,6 @@ char *parse_array_to_list(char *const *);
|
|||||||
char *register_bcache(char *const *);
|
char *register_bcache(char *const *);
|
||||||
char *unregister_bcache(char *const *);
|
char *unregister_bcache(char *const *);
|
||||||
char *probe(char *, int);
|
char *probe(char *, int);
|
||||||
void sb_state(struct cache_sb *, char *);
|
|
||||||
char *read_stat_dir(DIR *, char *, char *, bool);
|
char *read_stat_dir(DIR *, char *, char *, bool);
|
||||||
char *find_matching_uuid(char *, char *, const char*);
|
char *find_matching_uuid(char *, char *, const char*);
|
||||||
char *add_devices(char *const *, char *);
|
char *add_devices(char *const *, char *);
|
||||||
|
47
bcacheadm.c
47
bcacheadm.c
@ -459,31 +459,40 @@ int bcache_query_devs(NihCommand *command, char *const *args)
|
|||||||
|
|
||||||
int bcache_status(NihCommand *command, char *const *args)
|
int bcache_status(NihCommand *command, char *const *args)
|
||||||
{
|
{
|
||||||
int i;
|
int i, seq, nr_in_set = 0;
|
||||||
struct cache_sb *sb_tier0 = NULL, *sb_tier1 = NULL;
|
struct cache_sb *seq_sb = NULL;
|
||||||
char *dev0 = NULL, *dev1 = NULL;
|
|
||||||
|
|
||||||
for (i = 0; args[i] != NULL; i++) {
|
for (i = 0; args[i] != NULL; i++) {
|
||||||
struct cache_sb *sb = query_dev(args[i], false, false, false, NULL);
|
struct cache_sb *sb = query_dev(args[i], false, false,
|
||||||
struct cache_member *m = ((struct cache_member *) sb->d) +
|
false, NULL);
|
||||||
sb->nr_this_dev;
|
|
||||||
long long unsigned cache_tier = CACHE_TIER(m);
|
|
||||||
|
|
||||||
if (!cache_tier) {
|
if(!sb) {
|
||||||
if (!sb_tier0 || sb->seq > sb_tier0->seq) {
|
printf("Unable to open superblock, bad path\n");
|
||||||
sb_tier0 = sb;
|
return -1;
|
||||||
dev0 = args[i];
|
}
|
||||||
}
|
|
||||||
} else if (cache_tier == 1) {
|
if(!seq_sb || sb->seq > seq) {
|
||||||
if (!sb_tier1 || sb->seq > sb_tier1->seq) {
|
seq = sb->seq;
|
||||||
sb_tier1 = sb;
|
seq_sb = sb;
|
||||||
dev1 = args[i];
|
nr_in_set = sb->nr_in_set;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sb_tier0) sb_state(sb_tier0, dev0);
|
if(!seq_sb)
|
||||||
if (sb_tier1) sb_state(sb_tier1, dev1);
|
printf("Unable to find a superblock\n");
|
||||||
|
else
|
||||||
|
printf("%-50s%-15s%-4s\n", "uuid", "state", "tier");
|
||||||
|
|
||||||
|
for (i = 0; i < seq_sb->nr_in_set; i++) {
|
||||||
|
char uuid_str[40];
|
||||||
|
struct cache_member *m = ((struct cache_member *) seq_sb->d) + i;
|
||||||
|
|
||||||
|
uuid_unparse(m->uuid.b, uuid_str);
|
||||||
|
|
||||||
|
printf("%-50s%-15s%-4llu\n", uuid_str,
|
||||||
|
cache_state[CACHE_STATE(m)],
|
||||||
|
CACHE_TIER(m));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user