Skip to content

Commit 981ae37

Browse files
authored
Merge pull request #322 from hreinecke/update-config
fabrics: add 'nvmf_update_config()'
2 parents 321c5aa + 3cad0b7 commit 981ae37

3 files changed

Lines changed: 39 additions & 3 deletions

File tree

src/libnvme.map

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ LIBNVME_1_0 {
333333
nvmf_subtype_str;
334334
nvmf_treq_str;
335335
nvmf_trtype_str;
336+
nvmf_update_config;
336337
local:
337338
*;
338339
};

src/nvme/fabrics.c

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,40 @@ void nvmf_default_config(struct nvme_fabrics_config *cfg)
177177
cfg->ctrl_loss_tmo = NVMF_DEF_CTRL_LOSS_TMO;
178178
}
179179

180-
#define UPDATE_CFG_OPTION(c, n, o, d) \
180+
#define MERGE_CFG_OPTION(c, n, o, d) \
181181
if ((c)->o == d) (c)->o = (n)->o
182182
static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c,
183183
const struct nvme_fabrics_config *cfg)
184184
{
185185
struct nvme_fabrics_config *ctrl_cfg = nvme_ctrl_get_config(c);
186186

187+
MERGE_CFG_OPTION(ctrl_cfg, cfg, host_traddr, NULL);
188+
MERGE_CFG_OPTION(ctrl_cfg, cfg, host_iface, NULL);
189+
MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_io_queues, 0);
190+
MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_write_queues, 0);
191+
MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_poll_queues, 0);
192+
MERGE_CFG_OPTION(ctrl_cfg, cfg, queue_size, 0);
193+
MERGE_CFG_OPTION(ctrl_cfg, cfg, keep_alive_tmo, 0);
194+
MERGE_CFG_OPTION(ctrl_cfg, cfg, reconnect_delay, 0);
195+
MERGE_CFG_OPTION(ctrl_cfg, cfg, ctrl_loss_tmo,
196+
NVMF_DEF_CTRL_LOSS_TMO);
197+
MERGE_CFG_OPTION(ctrl_cfg, cfg, fast_io_fail_tmo, 0);
198+
MERGE_CFG_OPTION(ctrl_cfg, cfg, tos, -1);
199+
MERGE_CFG_OPTION(ctrl_cfg, cfg, duplicate_connect, false);
200+
MERGE_CFG_OPTION(ctrl_cfg, cfg, disable_sqflow, false);
201+
MERGE_CFG_OPTION(ctrl_cfg, cfg, hdr_digest, false);
202+
MERGE_CFG_OPTION(ctrl_cfg, cfg, data_digest, false);
203+
MERGE_CFG_OPTION(ctrl_cfg, cfg, tls, false);
204+
205+
return ctrl_cfg;
206+
}
207+
208+
#define UPDATE_CFG_OPTION(c, n, o, d) \
209+
if ((n)->o != d) (c)->o = (n)->o
210+
void nvmf_update_config(nvme_ctrl_t c, const struct nvme_fabrics_config *cfg)
211+
{
212+
struct nvme_fabrics_config *ctrl_cfg = nvme_ctrl_get_config(c);
213+
187214
UPDATE_CFG_OPTION(ctrl_cfg, cfg, host_traddr, NULL);
188215
UPDATE_CFG_OPTION(ctrl_cfg, cfg, host_iface, NULL);
189216
UPDATE_CFG_OPTION(ctrl_cfg, cfg, nr_io_queues, 0);
@@ -201,8 +228,6 @@ static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c,
201228
UPDATE_CFG_OPTION(ctrl_cfg, cfg, hdr_digest, false);
202229
UPDATE_CFG_OPTION(ctrl_cfg, cfg, data_digest, false);
203230
UPDATE_CFG_OPTION(ctrl_cfg, cfg, tls, false);
204-
205-
return ctrl_cfg;
206231
}
207232

208233
static int add_bool_argument(char **argstr, char *tok, bool arg)

src/nvme/fabrics.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,16 @@ const char *nvmf_cms_str(__u8 cms);
168168
*/
169169
void nvmf_default_config(struct nvme_fabrics_config *cfg);
170170

171+
/**
172+
* nvmf_update_config() - Update fabrics configuration values
173+
* @c: Controller to be modified
174+
* @cfg: Updated configuration values
175+
*
176+
* Updates the values from @c with the configuration values from @cfg;
177+
* all non-default values from @cfg will overwrite the values in @c.
178+
*/
179+
void nvmf_update_config(nvme_ctrl_t c, const struct nvme_fabrics_config *cfg);
180+
171181
/**
172182
* nvmf_add_ctrl() - Connect a controller and update topology
173183
* @h: Host to which the controller should be attached

0 commit comments

Comments
 (0)