forked from linux-nvme/nvme-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdisplay-tree.c
More file actions
79 lines (70 loc) · 2.08 KB
/
display-tree.c
File metadata and controls
79 lines (70 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// SPDX-License-Identifier: LGPL-2.1-or-later
/*
* This file is part of libnvme.
* Copyright (c) 2020 Western Digital Corporation or its affiliates.
*
* Authors: Keith Busch <[email protected]>
*/
/*
* display-tree: Scans the nvme topology, prints as an ascii tree with some
* selected attributes for each component.
*/
#include <stdio.h>
#include <inttypes.h>
#include <libnvme.h>
int main()
{
struct libnvme_global_ctx *ctx;
libnvme_host_t h;
libnvme_subsystem_t s, _s;
libnvme_ctrl_t c, _c;
libnvme_path_t p, _p;
libnvme_ns_t n, _n;
int err;
ctx = libnvme_create_global_ctx(stdout, DEFAULT_LOGLEVEL);
if (!ctx)
return 1;
err = libnvme_scan_topology(ctx, NULL, NULL);
if (err) {
libnvme_free_global_ctx(ctx);
return 1;
}
printf(".\n");
libnvme_for_each_host(ctx, h) {
libnvme_for_each_subsystem_safe(h, s, _s) {
printf("%c-- %s - NQN=%s\n", _s ? '|' : '`',
libnvme_subsystem_get_name(s),
libnvme_subsystem_get_subsysnqn(s));
libnvme_subsystem_for_each_ns_safe(s, n, _n) {
printf("%c |-- %s lba size:%d lba max:%" PRIu64 "\n",
_s ? '|' : ' ',
libnvme_ns_get_name(n),
libnvme_ns_get_lba_size(n),
libnvme_ns_get_lba_count(n));
}
libnvme_subsystem_for_each_ctrl_safe(s, c, _c) {
printf("%c %c-- %s %s %s %s\n",
_s ? '|' : ' ', _c ? '|' : '`',
libnvme_ctrl_get_name(c),
libnvme_ctrl_get_transport(c),
libnvme_ctrl_get_traddr(c),
libnvme_ctrl_get_state(c));
libnvme_ctrl_for_each_ns_safe(c, n, _n)
printf("%c %c %c-- %s lba size:%d lba max:%" PRIu64 "\n",
_s ? '|' : ' ', _c ? '|' : ' ',
_n ? '|' : '`',
libnvme_ns_get_name(n),
libnvme_ns_get_lba_size(n),
libnvme_ns_get_lba_count(n));
libnvme_ctrl_for_each_path_safe(c, p, _p)
printf("%c %c %c-- %s %s\n",
_s ? '|' : ' ', _c ? '|' : ' ',
_p ? '|' : '`',
libnvme_path_get_name(p),
libnvme_path_get_ana_state(p));
}
}
}
libnvme_free_global_ctx(ctx);
return 0;
}