#include "nbft.h"
#include "nvme-print.h"
#include "fabrics.h"
+#include "util/cleanup.h"
#include "util/logging.h"
#define PATH_NVMF_DISC SYSCONFDIR "/nvme/discovery.conf"
int nvmf_disconnect(const char *desc, int argc, char **argv)
{
const char *device = "nvme device handle";
- nvme_root_t r;
+ _cleanup_nvme_root_ nvme_root_t r = NULL;
nvme_ctrl_t c;
char *p;
int ret;
if (ret < 0) {
fprintf(stderr, "Failed to scan topology: %s\n",
nvme_strerror(errno));
- nvme_free_tree(r);
- return ret;
+ return -errno;
}
if (cfg.nqn)
if (!c) {
fprintf(stderr,
"Did not find device %s\n", p);
- nvme_free_tree(r);
return -errno;
}
ret = nvme_disconnect_ctrl(c);
p, nvme_strerror(errno));
}
}
- nvme_free_tree(r);
return 0;
}
int nvmf_disconnect_all(const char *desc, int argc, char **argv)
{
+ _cleanup_nvme_root_ nvme_root_t r = NULL;
nvme_host_t h;
nvme_subsystem_t s;
- nvme_root_t r;
nvme_ctrl_t c;
int ret;
if (errno != ENOENT)
fprintf(stderr, "Failed to scan topology: %s\n",
nvme_strerror(errno));
- nvme_free_tree(r);
- return ret;
+ return -errno;
}
nvme_for_each_host(r, h) {
}
}
}
- nvme_free_tree(r);
return 0;
}
char *subsysnqn = NULL;
char *transport = NULL, *traddr = NULL;
char *trsvcid = NULL, *hostnqn = NULL, *hostid = NULL;
- char *hnqn = NULL, *hid = NULL;
+ _cleanup_free_ char *hnqn = NULL;
+ _cleanup_free_ char *hid = NULL;
char *hostkey = NULL, *ctrlkey = NULL;
char *config_file = PATH_NVMF_CONFIG;
unsigned int verbose = 0;
- nvme_root_t r;
+ _cleanup_nvme_root_ nvme_root_t r = NULL;
int ret;
struct nvme_fabrics_config cfg;
bool scan_tree = false, modify_config = false, update_config = false;
if (ret < 0) {
fprintf(stderr, "Failed to scan topology: %s\n",
nvme_strerror(errno));
- nvme_free_tree(r);
- return ret;
+ return -errno;
}
}
if (!h) {
fprintf(stderr, "Failed to lookup host '%s': %s\n",
hostnqn, nvme_strerror(errno));
- goto out;
+ return -errno;
}
if (hostkey)
nvme_host_set_dhchap_key(h, hostkey);
if (!s) {
fprintf(stderr, "Failed to lookup subsystem '%s': %s\n",
subsysnqn, nvme_strerror(errno));
- goto out;
+ return -errno;
}
c = nvme_lookup_ctrl(s, transport, traddr,
cfg.host_traddr, cfg.host_iface,
if (!c) {
fprintf(stderr, "Failed to lookup controller: %s\n",
nvme_strerror(errno));
- goto out;
+ return -errno;
}
nvmf_update_config(c, &cfg);
if (ctrlkey)
if (dump_config)
nvme_dump_config(r);
-out:
- if (hid)
- free(hid);
- if (hnqn)
- free(hnqn);
- nvme_free_tree(r);
- return -errno;
+ return 0;
}
static void dim_operation(nvme_ctrl_t c, enum nvmf_dim_tas tas, const char *name)
int nvmf_dim(const char *desc, int argc, char **argv)
{
+ _cleanup_nvme_root_ nvme_root_t r = NULL;
enum nvmf_dim_tas tas;
- nvme_root_t r;
nvme_ctrl_t c;
char *p;
int ret;
if (ret < 0) {
fprintf(stderr, "Failed to scan topology: %s\n",
nvme_strerror(errno));
- nvme_free_tree(r);
- return ret;
+ return -errno;
}
if (cfg.nqn) {
}
}
- nvme_free_tree(r);
-
return 0;
}