1
0
Fork 0

Adding upstream version 2.14.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-22 13:00:33 +02:00
parent 94a061187a
commit dbdc28cb89
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
572 changed files with 4636 additions and 1730 deletions

View file

@ -46,7 +46,8 @@
#include "nvme-print.h"
#include "fabrics.h"
#include "util/cleanup.h"
#include "util/logging.h"
#include "logging.h"
#include "util/sighdl.h"
#define PATH_NVMF_DISC SYSCONFDIR "/nvme/discovery.conf"
#define PATH_NVMF_CONFIG SYSCONFDIR "/nvme/config.json"
@ -170,6 +171,30 @@ static int set_discovery_kato(struct nvme_fabrics_config *cfg)
return tmo;
}
static int nvme_add_ctrl(nvme_host_t h, nvme_ctrl_t c,
struct nvme_fabrics_config *cfg)
{
int ret;
retry:
/*
* __create_discover_ctrl and callers depend on errno being set
* in the error case.
*/
errno = 0;
ret = nvmf_add_ctrl(h, c, cfg);
if (!ret)
return 0;
if (errno == EAGAIN || (errno == EINTR && !nvme_sigint_received)) {
print_debug("nvmf_add_ctrl returned '%s'\n", strerror(errno));
goto retry;
}
return -errno;
}
static nvme_ctrl_t __create_discover_ctrl(nvme_root_t r, nvme_host_t h,
struct nvme_fabrics_config *cfg,
struct tr_config *trcfg)
@ -188,9 +213,7 @@ static nvme_ctrl_t __create_discover_ctrl(nvme_root_t r, nvme_host_t h,
strcmp(trcfg->subsysnqn, NVME_DISC_SUBSYS_NAME));
tmo = set_discovery_kato(cfg);
errno = 0;
ret = nvmf_add_ctrl(h, c, cfg);
ret = nvme_add_ctrl(h, c, cfg);
cfg->keep_alive_tmo = tmo;
if (ret) {
nvme_free_ctrl(c);
@ -1062,10 +1085,8 @@ do_connect:
return -errno;
h = nvme_lookup_host(r, hnqn, hid);
if (!h) {
errno = ENOMEM;
goto out_free;
}
if (!h)
return -ENOMEM;
if (hostkey)
nvme_host_set_dhchap_key(h, hostkey);
if (!trsvcid)
@ -1086,37 +1107,33 @@ do_connect:
c = lookup_ctrl(h, &trcfg);
if (c && nvme_ctrl_get_name(c) && !cfg.duplicate_connect) {
fprintf(stderr, "already connected\n");
errno = EALREADY;
goto out_free;
return -EALREADY;
}
c = nvme_create_ctrl(r, subsysnqn, transport, traddr,
cfg.host_traddr, cfg.host_iface, trsvcid);
if (!c) {
errno = ENOMEM;
goto out_free;
}
if (!c)
return -ENOMEM;
if (ctrlkey)
nvme_ctrl_set_dhchap_key(c, ctrlkey);
nvme_parse_tls_args(keyring, tls_key, tls_key_identity, &cfg, c);
errno = 0;
ret = nvmf_add_ctrl(h, c, &cfg);
if (ret)
ret = nvme_add_ctrl(h, c, &cfg);
if (ret) {
fprintf(stderr, "could not add new controller: %s\n",
nvme_strerror(errno));
else {
errno = 0;
if (flags != -EINVAL)
nvme_show_connect_msg(c, flags);
nvme_strerror(-ret));
return ret;
}
out_free:
/* always print connected device */
nvme_show_connect_msg(c, flags);
if (dump_config)
nvme_dump_config(r);
return -errno;
return 0;
}
static nvme_ctrl_t lookup_nvme_ctrl(nvme_root_t r, const char *name)