Skip to content

Commit a8ff812

Browse files
committed
fabrics: retire libnvme_fabrics_config from public API
Retire struct libnvme_fabrics_config from the public API and replace it with an anonymous struct accessed via getter/setters. This makes it possible to extend the API without breaking the ABI. Signed-off-by: Daniel Wagner <[email protected]>
1 parent deafe09 commit a8ff812

15 files changed

Lines changed: 815 additions & 223 deletions

fabrics.c

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -297,28 +297,31 @@ static void cb_parser_cleanup(struct libnvmf_context *fctx, void *user_data)
297297
static int set_fabrics_options(struct libnvmf_context *fctx,
298298
struct nvmf_args *fa)
299299
{
300-
struct libnvme_fabrics_config fcfg;
301-
302-
fcfg.queue_size = fa->queue_size;
303-
fcfg.nr_io_queues = fa->nr_io_queues;
304-
fcfg.reconnect_delay = fa->reconnect_delay;
305-
fcfg.ctrl_loss_tmo = fa->ctrl_loss_tmo;
306-
fcfg.fast_io_fail_tmo = fa->fast_io_fail_tmo;
307-
fcfg.keep_alive_tmo = fa->keep_alive_tmo;
308-
fcfg.nr_write_queues = fa->nr_write_queues;
309-
fcfg.nr_poll_queues = fa->nr_poll_queues;
310-
fcfg.tos = fa->tos;
311-
fcfg.keyring_id = fa->keyring_id;
312-
fcfg.tls_key_id = fa->tls_key_id;
313-
fcfg.tls_configured_key_id = fa->tls_configured_key_id;
314-
fcfg.duplicate_connect = fa->duplicate_connect;
315-
fcfg.disable_sqflow = fa->disable_sqflow;
316-
fcfg.hdr_digest = fa->hdr_digest;
317-
fcfg.data_digest = fa->data_digest;
318-
fcfg.tls = fa->tls;
319-
fcfg.concat = fa->concat;
320-
321-
return libnvmf_context_set_fabrics_config(fctx, &fcfg);
300+
struct libnvme_fabrics_config *fcfg;
301+
302+
fcfg = libnvmf_context_get_fabrics_config(fctx);
303+
if (!fcfg)
304+
return -EINVAL;
305+
306+
libnvme_fabrics_config_set_nr_io_queues(fcfg, fa->nr_io_queues);
307+
libnvme_fabrics_config_set_reconnect_delay(fcfg, fa->reconnect_delay);
308+
libnvme_fabrics_config_set_ctrl_loss_tmo(fcfg, fa->ctrl_loss_tmo);
309+
libnvme_fabrics_config_set_fast_io_fail_tmo(fcfg, fa->fast_io_fail_tmo);
310+
libnvme_fabrics_config_set_keep_alive_tmo(fcfg, fa->keep_alive_tmo);
311+
libnvme_fabrics_config_set_nr_write_queues(fcfg, fa->nr_write_queues);
312+
libnvme_fabrics_config_set_nr_poll_queues(fcfg, fa->nr_poll_queues);
313+
libnvme_fabrics_config_set_tos(fcfg, fa->tos);
314+
libnvme_fabrics_config_set_keyring_id(fcfg, fa->keyring_id);
315+
libnvme_fabrics_config_set_tls_key_id(fcfg, fa->tls_key_id);
316+
libnvme_fabrics_config_set_tls_configured_key_id(fcfg, fa->tls_configured_key_id);
317+
libnvme_fabrics_config_set_duplicate_connect(fcfg, fa->duplicate_connect);
318+
libnvme_fabrics_config_set_disable_sqflow(fcfg, fa->disable_sqflow);
319+
libnvme_fabrics_config_set_hdr_digest(fcfg, fa->hdr_digest);
320+
libnvme_fabrics_config_set_data_digest(fcfg, fa->data_digest);
321+
libnvme_fabrics_config_set_tls(fcfg, fa->tls);
322+
libnvme_fabrics_config_set_concat(fcfg, fa->concat);
323+
324+
return 0;
322325
}
323326

324327
static int cb_parser_next_line(struct libnvmf_context *fctx, void *user_data)

libnvme/libnvme/nvme.i

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -443,23 +443,18 @@ struct libnvme_ns {
443443
%rename(set_connection) libnvmf_context::fctx_set_connection;
444444
%rename(set_persistent) libnvmf_context::fctx_set_persistent;
445445
%rename(set_device) libnvmf_context::fctx_set_device;
446-
%rename(set_fabrics_config) libnvmf_context::fctx_set_fabrics_config;
447446

448447
struct libnvmf_context {};
449448

450449
%extend libnvmf_context {
451450
libnvmf_context(struct libnvme_global_ctx *ctx) {
452451
struct libnvmf_context *fctx;
453-
struct libnvme_fabrics_config cfg = {};
454452
int err;
455453

456454
err = libnvmf_context_create(ctx, NULL, NULL, NULL, NULL, &fctx);
457455
if (err)
458456
return NULL;
459457

460-
libnvmf_default_config(&cfg);
461-
libnvmf_context_set_fabrics_config(fctx, &cfg);
462-
463458
return fctx;
464459
}
465460
~libnvmf_context() {

libnvme/src/accessors.ld

Lines changed: 133 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -10,145 +10,181 @@
1010

1111
LIBNVME_ACCESSORS_3 {
1212
global:
13-
libnvme_path_get_name;
14-
libnvme_path_set_name;
15-
libnvme_path_get_sysfs_dir;
16-
libnvme_path_set_sysfs_dir;
17-
libnvme_path_get_ana_state;
18-
libnvme_path_set_ana_state;
19-
libnvme_path_get_numa_nodes;
20-
libnvme_path_set_numa_nodes;
21-
libnvme_path_get_grpid;
22-
libnvme_path_set_grpid;
23-
libnvme_ns_get_nsid;
24-
libnvme_ns_set_nsid;
25-
libnvme_ns_get_name;
26-
libnvme_ns_set_name;
27-
libnvme_ns_get_sysfs_dir;
28-
libnvme_ns_set_sysfs_dir;
29-
libnvme_ns_get_lba_shift;
30-
libnvme_ns_set_lba_shift;
31-
libnvme_ns_get_lba_size;
32-
libnvme_ns_set_lba_size;
33-
libnvme_ns_get_meta_size;
34-
libnvme_ns_set_meta_size;
35-
libnvme_ns_get_lba_count;
36-
libnvme_ns_set_lba_count;
37-
libnvme_ns_get_lba_util;
38-
libnvme_ns_set_lba_util;
39-
libnvme_ctrl_get_name;
40-
libnvme_ctrl_get_sysfs_dir;
13+
libnvme_ctrl_get_cntlid;
14+
libnvme_ctrl_get_cntrltype;
15+
libnvme_ctrl_get_dctype;
16+
libnvme_ctrl_get_dhchap_ctrl_key;
17+
libnvme_ctrl_get_dhchap_host_key;
18+
libnvme_ctrl_get_discovered;
19+
libnvme_ctrl_get_discovery_ctrl;
4120
libnvme_ctrl_get_firmware;
21+
libnvme_ctrl_get_host_iface;
22+
libnvme_ctrl_get_host_traddr;
23+
libnvme_ctrl_get_keyring;
4224
libnvme_ctrl_get_model;
25+
libnvme_ctrl_get_name;
4326
libnvme_ctrl_get_numa_node;
27+
libnvme_ctrl_get_persistent;
28+
libnvme_ctrl_get_phy_slot;
4429
libnvme_ctrl_get_queue_count;
4530
libnvme_ctrl_get_serial;
4631
libnvme_ctrl_get_sqsize;
47-
libnvme_ctrl_get_transport;
4832
libnvme_ctrl_get_subsysnqn;
33+
libnvme_ctrl_get_sysfs_dir;
34+
libnvme_ctrl_get_tls_key;
35+
libnvme_ctrl_get_tls_key_identity;
4936
libnvme_ctrl_get_traddr;
37+
libnvme_ctrl_get_transport;
5038
libnvme_ctrl_get_trsvcid;
51-
libnvme_ctrl_get_dhchap_host_key;
52-
libnvme_ctrl_set_dhchap_host_key;
53-
libnvme_ctrl_get_dhchap_ctrl_key;
39+
libnvme_ctrl_get_unique_discovery_ctrl;
5440
libnvme_ctrl_set_dhchap_ctrl_key;
55-
libnvme_ctrl_get_keyring;
41+
libnvme_ctrl_set_dhchap_host_key;
42+
libnvme_ctrl_set_discovered;
43+
libnvme_ctrl_set_discovery_ctrl;
5644
libnvme_ctrl_set_keyring;
57-
libnvme_ctrl_get_tls_key_identity;
58-
libnvme_ctrl_set_tls_key_identity;
59-
libnvme_ctrl_get_tls_key;
45+
libnvme_ctrl_set_persistent;
6046
libnvme_ctrl_set_tls_key;
61-
libnvme_ctrl_get_cntrltype;
62-
libnvme_ctrl_get_cntlid;
63-
libnvme_ctrl_get_dctype;
64-
libnvme_ctrl_get_phy_slot;
65-
libnvme_ctrl_get_host_traddr;
66-
libnvme_ctrl_get_host_iface;
67-
libnvme_ctrl_get_discovery_ctrl;
68-
libnvme_ctrl_set_discovery_ctrl;
69-
libnvme_ctrl_get_unique_discovery_ctrl;
47+
libnvme_ctrl_set_tls_key_identity;
7048
libnvme_ctrl_set_unique_discovery_ctrl;
71-
libnvme_ctrl_get_discovered;
72-
libnvme_ctrl_set_discovered;
73-
libnvme_ctrl_get_persistent;
74-
libnvme_ctrl_set_persistent;
75-
libnvme_subsystem_get_name;
76-
libnvme_subsystem_get_sysfs_dir;
77-
libnvme_subsystem_get_subsysnqn;
78-
libnvme_subsystem_get_model;
79-
libnvme_subsystem_get_serial;
80-
libnvme_subsystem_get_firmware;
81-
libnvme_subsystem_get_subsystype;
82-
libnvme_subsystem_get_application;
83-
libnvme_subsystem_set_application;
84-
libnvme_subsystem_get_iopolicy;
85-
libnvme_subsystem_set_iopolicy;
86-
libnvme_host_get_hostnqn;
87-
libnvme_host_get_hostid;
88-
libnvme_host_get_dhchap_host_key;
89-
libnvme_host_set_dhchap_host_key;
90-
libnvme_host_get_hostsymname;
91-
libnvme_host_set_hostsymname;
92-
libnvme_host_get_pdc_enabled_valid;
93-
libnvme_host_set_pdc_enabled_valid;
9449
libnvme_fabric_options_get_cntlid;
95-
libnvme_fabric_options_set_cntlid;
9650
libnvme_fabric_options_get_concat;
97-
libnvme_fabric_options_set_concat;
9851
libnvme_fabric_options_get_ctrl_loss_tmo;
99-
libnvme_fabric_options_set_ctrl_loss_tmo;
10052
libnvme_fabric_options_get_data_digest;
101-
libnvme_fabric_options_set_data_digest;
10253
libnvme_fabric_options_get_dhchap_ctrl_secret;
103-
libnvme_fabric_options_set_dhchap_ctrl_secret;
10454
libnvme_fabric_options_get_dhchap_secret;
105-
libnvme_fabric_options_set_dhchap_secret;
10655
libnvme_fabric_options_get_disable_sqflow;
107-
libnvme_fabric_options_set_disable_sqflow;
10856
libnvme_fabric_options_get_discovery;
109-
libnvme_fabric_options_set_discovery;
11057
libnvme_fabric_options_get_duplicate_connect;
111-
libnvme_fabric_options_set_duplicate_connect;
11258
libnvme_fabric_options_get_fast_io_fail_tmo;
113-
libnvme_fabric_options_set_fast_io_fail_tmo;
11459
libnvme_fabric_options_get_hdr_digest;
115-
libnvme_fabric_options_set_hdr_digest;
11660
libnvme_fabric_options_get_host_iface;
117-
libnvme_fabric_options_set_host_iface;
11861
libnvme_fabric_options_get_host_traddr;
119-
libnvme_fabric_options_set_host_traddr;
12062
libnvme_fabric_options_get_hostid;
121-
libnvme_fabric_options_set_hostid;
12263
libnvme_fabric_options_get_hostnqn;
123-
libnvme_fabric_options_set_hostnqn;
12464
libnvme_fabric_options_get_instance;
125-
libnvme_fabric_options_set_instance;
12665
libnvme_fabric_options_get_keep_alive_tmo;
127-
libnvme_fabric_options_set_keep_alive_tmo;
12866
libnvme_fabric_options_get_keyring;
129-
libnvme_fabric_options_set_keyring;
13067
libnvme_fabric_options_get_nqn;
131-
libnvme_fabric_options_set_nqn;
13268
libnvme_fabric_options_get_nr_io_queues;
133-
libnvme_fabric_options_set_nr_io_queues;
13469
libnvme_fabric_options_get_nr_poll_queues;
135-
libnvme_fabric_options_set_nr_poll_queues;
13670
libnvme_fabric_options_get_nr_write_queues;
137-
libnvme_fabric_options_set_nr_write_queues;
13871
libnvme_fabric_options_get_queue_size;
139-
libnvme_fabric_options_set_queue_size;
14072
libnvme_fabric_options_get_reconnect_delay;
141-
libnvme_fabric_options_set_reconnect_delay;
14273
libnvme_fabric_options_get_tls;
143-
libnvme_fabric_options_set_tls;
14474
libnvme_fabric_options_get_tls_key;
145-
libnvme_fabric_options_set_tls_key;
14675
libnvme_fabric_options_get_tos;
147-
libnvme_fabric_options_set_tos;
14876
libnvme_fabric_options_get_traddr;
149-
libnvme_fabric_options_set_traddr;
15077
libnvme_fabric_options_get_transport;
151-
libnvme_fabric_options_set_transport;
15278
libnvme_fabric_options_get_trsvcid;
79+
libnvme_fabric_options_set_cntlid;
80+
libnvme_fabric_options_set_concat;
81+
libnvme_fabric_options_set_ctrl_loss_tmo;
82+
libnvme_fabric_options_set_data_digest;
83+
libnvme_fabric_options_set_dhchap_ctrl_secret;
84+
libnvme_fabric_options_set_dhchap_secret;
85+
libnvme_fabric_options_set_disable_sqflow;
86+
libnvme_fabric_options_set_discovery;
87+
libnvme_fabric_options_set_duplicate_connect;
88+
libnvme_fabric_options_set_fast_io_fail_tmo;
89+
libnvme_fabric_options_set_hdr_digest;
90+
libnvme_fabric_options_set_host_iface;
91+
libnvme_fabric_options_set_host_traddr;
92+
libnvme_fabric_options_set_hostid;
93+
libnvme_fabric_options_set_hostnqn;
94+
libnvme_fabric_options_set_instance;
95+
libnvme_fabric_options_set_keep_alive_tmo;
96+
libnvme_fabric_options_set_keyring;
97+
libnvme_fabric_options_set_nqn;
98+
libnvme_fabric_options_set_nr_io_queues;
99+
libnvme_fabric_options_set_nr_poll_queues;
100+
libnvme_fabric_options_set_nr_write_queues;
101+
libnvme_fabric_options_set_queue_size;
102+
libnvme_fabric_options_set_reconnect_delay;
103+
libnvme_fabric_options_set_tls;
104+
libnvme_fabric_options_set_tls_key;
105+
libnvme_fabric_options_set_tos;
106+
libnvme_fabric_options_set_traddr;
107+
libnvme_fabric_options_set_transport;
153108
libnvme_fabric_options_set_trsvcid;
109+
libnvme_fabrics_config_get_concat;
110+
libnvme_fabrics_config_get_ctrl_loss_tmo;
111+
libnvme_fabrics_config_get_data_digest;
112+
libnvme_fabrics_config_get_disable_sqflow;
113+
libnvme_fabrics_config_get_duplicate_connect;
114+
libnvme_fabrics_config_get_fast_io_fail_tmo;
115+
libnvme_fabrics_config_get_hdr_digest;
116+
libnvme_fabrics_config_get_keep_alive_tmo;
117+
libnvme_fabrics_config_get_keyring_id;
118+
libnvme_fabrics_config_get_nr_io_queues;
119+
libnvme_fabrics_config_get_nr_poll_queues;
120+
libnvme_fabrics_config_get_nr_write_queues;
121+
libnvme_fabrics_config_get_queue_size;
122+
libnvme_fabrics_config_get_reconnect_delay;
123+
libnvme_fabrics_config_get_tls;
124+
libnvme_fabrics_config_get_tls_configured_key_id;
125+
libnvme_fabrics_config_get_tls_key_id;
126+
libnvme_fabrics_config_get_tos;
127+
libnvme_fabrics_config_set_concat;
128+
libnvme_fabrics_config_set_ctrl_loss_tmo;
129+
libnvme_fabrics_config_set_data_digest;
130+
libnvme_fabrics_config_set_disable_sqflow;
131+
libnvme_fabrics_config_set_duplicate_connect;
132+
libnvme_fabrics_config_set_fast_io_fail_tmo;
133+
libnvme_fabrics_config_set_hdr_digest;
134+
libnvme_fabrics_config_set_keep_alive_tmo;
135+
libnvme_fabrics_config_set_keyring_id;
136+
libnvme_fabrics_config_set_nr_io_queues;
137+
libnvme_fabrics_config_set_nr_poll_queues;
138+
libnvme_fabrics_config_set_nr_write_queues;
139+
libnvme_fabrics_config_set_queue_size;
140+
libnvme_fabrics_config_set_reconnect_delay;
141+
libnvme_fabrics_config_set_tls;
142+
libnvme_fabrics_config_set_tls_configured_key_id;
143+
libnvme_fabrics_config_set_tls_key_id;
144+
libnvme_fabrics_config_set_tos;
145+
libnvme_host_get_dhchap_host_key;
146+
libnvme_host_get_hostid;
147+
libnvme_host_get_hostnqn;
148+
libnvme_host_get_hostsymname;
149+
libnvme_host_get_pdc_enabled_valid;
150+
libnvme_host_set_dhchap_host_key;
151+
libnvme_host_set_hostsymname;
152+
libnvme_host_set_pdc_enabled_valid;
153+
libnvme_ns_get_lba_count;
154+
libnvme_ns_get_lba_shift;
155+
libnvme_ns_get_lba_size;
156+
libnvme_ns_get_lba_util;
157+
libnvme_ns_get_meta_size;
158+
libnvme_ns_get_name;
159+
libnvme_ns_get_nsid;
160+
libnvme_ns_get_sysfs_dir;
161+
libnvme_ns_set_lba_count;
162+
libnvme_ns_set_lba_shift;
163+
libnvme_ns_set_lba_size;
164+
libnvme_ns_set_lba_util;
165+
libnvme_ns_set_meta_size;
166+
libnvme_ns_set_name;
167+
libnvme_ns_set_nsid;
168+
libnvme_ns_set_sysfs_dir;
169+
libnvme_path_get_ana_state;
170+
libnvme_path_get_grpid;
171+
libnvme_path_get_name;
172+
libnvme_path_get_numa_nodes;
173+
libnvme_path_get_sysfs_dir;
174+
libnvme_path_set_ana_state;
175+
libnvme_path_set_grpid;
176+
libnvme_path_set_name;
177+
libnvme_path_set_numa_nodes;
178+
libnvme_path_set_sysfs_dir;
179+
libnvme_subsystem_get_application;
180+
libnvme_subsystem_get_firmware;
181+
libnvme_subsystem_get_iopolicy;
182+
libnvme_subsystem_get_model;
183+
libnvme_subsystem_get_name;
184+
libnvme_subsystem_get_serial;
185+
libnvme_subsystem_get_subsysnqn;
186+
libnvme_subsystem_get_subsystype;
187+
libnvme_subsystem_get_sysfs_dir;
188+
libnvme_subsystem_set_application;
189+
libnvme_subsystem_set_iopolicy;
154190
};

libnvme/src/libnvmf.ld

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ LIBNVMF_3 {
1111
libnvmf_connect_ctrl;
1212
libnvmf_context_create;
1313
libnvmf_context_free;
14+
libnvmf_context_get_fabrics_config;
1415
libnvmf_context_set_connection;
1516
libnvmf_context_set_crypto;
1617
libnvmf_context_set_device;
@@ -20,8 +21,7 @@ LIBNVMF_3 {
2021
libnvmf_context_set_hostnqn;
2122
libnvmf_context_set_persistent;
2223
libnvmf_create_ctrl;
23-
libnvmf_ctrl_get_config;
24-
libnvmf_default_config;
24+
libnvmf_ctrl_get_fabrics_config;
2525
libnvmf_disconnect_ctrl;
2626
libnvmf_discovery;
2727
libnvmf_discovery_args_create;
@@ -44,7 +44,6 @@ LIBNVMF_3 {
4444
libnvmf_subtype_str;
4545
libnvmf_treq_str;
4646
libnvmf_trtype_str;
47-
libnvmf_update_config;
4847
local:
4948
*;
5049
};

libnvme/src/nvme/accessors-fabrics.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ __public void libnvmf_discovery_args_set_lsp(
4848
p->lsp = lsp;
4949
}
5050

51-
__public __u8 libnvmf_discovery_args_get_lsp(const struct libnvmf_discovery_args *p)
51+
__public __u8 libnvmf_discovery_args_get_lsp(
52+
const struct libnvmf_discovery_args *p)
5253
{
5354
return p->lsp;
5455
}

0 commit comments

Comments
 (0)