Skip to content

Commit 3af35b9

Browse files
committed
Rework nvme_scan_filter()
Split off nvme_scan_filter() into nvme_create_root() and export the remaining functionality as nvme_scan_topology(). With that nvme_scan_filter() becomes pointless as the component functions can be called directly. Signed-off-by: Hannes Reinecke <[email protected]>
1 parent 2ed8492 commit 3af35b9

6 files changed

Lines changed: 34 additions & 35 deletions

File tree

doc/libnvme.rst

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5840,14 +5840,6 @@ The nvme command status if a response was received (see
58405840
``nvme_subsystem_t s``
58415841
58425842
5843-
.. c:function:: nvme_root_t nvme_scan_filter (nvme_scan_filter_t f)
5844-
5845-
5846-
**Parameters**
5847-
5848-
``nvme_scan_filter_t f``
5849-
5850-
58515843
.. c:function:: nvme_root_t nvme_scan ()
58525844
58535845

doc/man/nvme_scan_filter.2

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/libnvme.map

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LIBNVME_1_0 {
88
nvme_capacity_mgmt;
99
nvme_compare;
1010
nvme_copy;
11+
nvme_create_root;
1112
nvme_create_ctrl;
1213
nvme_ctrl_disconnect;
1314
nvme_ctrl_first_ns;
@@ -241,7 +242,7 @@ LIBNVME_1_0 {
241242
nvme_scan_ctrl;
242243
nvme_scan_ctrl_namespace_paths;
243244
nvme_scan_ctrl_namespaces;
244-
nvme_scan_filter;
245+
nvme_scan_topology;
245246
nvme_scan_namespace;
246247
nvme_scan_subsystem_namespaces;
247248
nvme_scan_subsystems;

src/nvme/tree.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,14 @@ nvme_host_t nvme_default_host(nvme_root_t r)
7171
return h;
7272
}
7373

74-
static int nvme_scan_topology(struct nvme_root *r, nvme_scan_filter_t f)
74+
int nvme_scan_topology(struct nvme_root *r, nvme_scan_filter_t f)
7575
{
7676
struct dirent **subsys, **ctrls;
7777
int i, num_subsys, num_ctrls, ret;
7878

79+
if (!r)
80+
return 0;
81+
7982
num_ctrls = nvme_scan_ctrls(&ctrls);
8083
if (num_ctrls < 0) {
8184
nvme_msg(r, LOG_DEBUG, "failed to scan ctrls: %s\n",
@@ -118,7 +121,7 @@ static int nvme_scan_topology(struct nvme_root *r, nvme_scan_filter_t f)
118121
return 0;
119122
}
120123

121-
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp, int log_level)
124+
nvme_root_t nvme_create_root(FILE *fp, int log_level)
122125
{
123126
struct nvme_root *r = calloc(1, sizeof(*r));
124127

@@ -131,7 +134,6 @@ nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp, int log_level)
131134
if (fp)
132135
r->fp = fp;
133136
list_head_init(&r->hosts);
134-
nvme_scan_topology(r, f);
135137
return r;
136138
}
137139

@@ -147,10 +149,10 @@ void nvme_read_config(nvme_root_t r, const char *config_file)
147149

148150
nvme_root_t nvme_scan(const char *config_file)
149151
{
150-
nvme_root_t r = nvme_scan_filter(NULL, NULL, DEFAULT_LOGLEVEL);
152+
nvme_root_t r = nvme_create_root(NULL, DEFAULT_LOGLEVEL);
151153

154+
nvme_scan_topology(r, NULL);
152155
nvme_read_config(r, config_file);
153-
154156
return r;
155157
}
156158

src/nvme/tree.h

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,23 @@ typedef struct nvme_root *nvme_root_t;
5656
*/
5757
typedef bool (*nvme_scan_filter_t)(nvme_subsystem_t);
5858

59+
/**
60+
* nvme_create_root() - Initialize root object
61+
* @fp: filedescriptor for logging messages
62+
* @log_level: logging level to use
63+
*
64+
* Return: initialized nvme_root_t structure
65+
*/
66+
nvme_root_t nvme_create_root(FILE *fp, int log_level);
67+
68+
/**
69+
* nvme_free_tree() - Free root object
70+
* @r: nvme_root_t object
71+
*
72+
* Free an nvme_root_t object and all attached objects
73+
*/
74+
void nvme_free_tree(nvme_root_t r);
75+
5976
/**
6077
* nvme_first_host() -
6178
* @r:
@@ -967,17 +984,16 @@ const char *nvme_subsystem_get_name(nvme_subsystem_t s);
967984
const char *nvme_subsystem_get_type(nvme_subsystem_t s);
968985

969986
/**
970-
* nvme_scan_filter() - Scan NVMe topology and apply filter
987+
* nvme_scan_topology() - Scan NVMe topology and apply filter
988+
* @r: nvme_root_t object
971989
* @f: filter to apply
972-
* @fp: filepointer for error messages
973-
* @log_level: logging level for this structure
974990
*
975991
* Scans the NVMe topology and filters out the resulting elements
976992
* by applying @f.
977993
*
978-
* Return: nvme_root_t structure holding the resulting elements.
994+
* Return: Number of elements scanned
979995
*/
980-
nvme_root_t nvme_scan_filter(nvme_scan_filter_t f, FILE *fp, int log_level);
996+
int nvme_scan_topology(nvme_root_t r, nvme_scan_filter_t f);
981997

982998
/**
983999
* nvme_host_get_hostnqn() -
@@ -1055,12 +1071,6 @@ int nvme_update_config(nvme_root_t r);
10551071
*/
10561072
int nvme_dump_config(nvme_root_t r);
10571073

1058-
/**
1059-
* nvme_free_tree() -
1060-
* @r:
1061-
*/
1062-
void nvme_free_tree(nvme_root_t r);
1063-
10641074
/**
10651075
* nvme_get_attr() -
10661076
* @dir:

test/test.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,10 @@ int main(int argc, char **argv)
318318

319319
printf("Test filter for common loop back target\n");
320320
nqn_match = "testnqn";
321-
r = nvme_scan_filter(nvme_match_subsysnqn_filter, NULL,
322-
DEFAULT_LOGLEVEL);
321+
r = nvme_create_root(NULL, DEFAULT_LOGLEVEL);
322+
if (!r)
323+
return 1;
324+
nvme_scan_topology(r, nvme_match_subsysnqn_filter);
323325
nvme_for_each_host(r, h) {
324326
nvme_for_each_subsystem(h, s) {
325327
printf("%s - NQN=%s\n", nvme_subsystem_get_name(s),

0 commit comments

Comments
 (0)