Merging upstream version 1.10.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
05578a6ab9
commit
a02d194ad0
946 changed files with 4401 additions and 1290 deletions
164
test/config/hostnqn-order.c
Normal file
164
test/config/hostnqn-order.c
Normal file
|
@ -0,0 +1,164 @@
|
|||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
/**
|
||||
* This file is part of libnvme.
|
||||
* Copyright (c) 2024 Daniel Wagner, SUSE LLC
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <libnvme.h>
|
||||
|
||||
static bool command_line(void)
|
||||
{
|
||||
bool pass = false;
|
||||
nvme_root_t r;
|
||||
int err;
|
||||
char *hostnqn, *hostid, *hnqn, *hid;
|
||||
|
||||
r = nvme_create_root(stderr, LOG_ERR);
|
||||
if (!r)
|
||||
return false;
|
||||
|
||||
err = nvme_scan_topology(r, NULL, NULL);
|
||||
if (err) {
|
||||
if (errno != ENOENT)
|
||||
goto out;
|
||||
}
|
||||
|
||||
hostnqn = "nqn.2014-08.org.nvmexpress:uuid:ce4fee3e-c02c-11ee-8442-830d068a36c6";
|
||||
hostid = "ce4fee3e-c02c-11ee-8442-830d068a36c6";
|
||||
|
||||
err = nvme_host_get_ids(r, hostnqn, hostid, &hnqn, &hid);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
if (strcmp(hostnqn, hnqn)) {
|
||||
printf("json config hostnqn '%s' does not match '%s'\n", hostnqn, hnqn);
|
||||
goto out;
|
||||
}
|
||||
if (strcmp(hostid, hid)) {
|
||||
printf("json config hostid '%s' does not match '%s'\n", hostid, hid);
|
||||
goto out;
|
||||
}
|
||||
|
||||
free(hnqn);
|
||||
free(hid);
|
||||
|
||||
pass = true;
|
||||
|
||||
out:
|
||||
nvme_free_tree(r);
|
||||
return pass;
|
||||
}
|
||||
|
||||
static bool json_config(char *file)
|
||||
{
|
||||
bool pass = false;
|
||||
nvme_root_t r;
|
||||
int err;
|
||||
char *hostnqn, *hostid, *hnqn, *hid;
|
||||
|
||||
setenv("LIBNVME_HOSTNQN", "", 1);
|
||||
setenv("LIBNVME_HOSTID", "", 1);
|
||||
|
||||
r = nvme_create_root(stderr, LOG_ERR);
|
||||
if (!r)
|
||||
return false;
|
||||
|
||||
/* We need to read the config in before we scan */
|
||||
err = nvme_read_config(r, file);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
err = nvme_scan_topology(r, NULL, NULL);
|
||||
if (err) {
|
||||
if (errno != ENOENT)
|
||||
goto out;
|
||||
}
|
||||
|
||||
hostnqn = "nqn.2014-08.org.nvmexpress:uuid:2cd2c43b-a90a-45c1-a8cd-86b33ab273b5";
|
||||
hostid = "2cd2c43b-a90a-45c1-a8cd-86b33ab273b5";
|
||||
|
||||
err = nvme_host_get_ids(r, NULL, NULL, &hnqn, &hid);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
if (strcmp(hostnqn, hnqn)) {
|
||||
printf("json config hostnqn '%s' does not match '%s'\n", hostnqn, hnqn);
|
||||
goto out;
|
||||
}
|
||||
if (strcmp(hostid, hid)) {
|
||||
printf("json config hostid '%s' does not match '%s'\n", hostid, hid);
|
||||
goto out;
|
||||
}
|
||||
|
||||
free(hnqn);
|
||||
free(hid);
|
||||
|
||||
pass = true;
|
||||
|
||||
out:
|
||||
nvme_free_tree(r);
|
||||
return pass;
|
||||
}
|
||||
|
||||
static bool from_file(void)
|
||||
{
|
||||
bool pass = false;
|
||||
nvme_root_t r;
|
||||
int err;
|
||||
char *hostnqn, *hostid, *hnqn, *hid;
|
||||
|
||||
hostnqn = "nqn.2014-08.org.nvmexpress:uuid:ce4fee3e-c02c-11ee-8442-830d068a36c6";
|
||||
hostid = "ce4fee3e-c02c-11ee-8442-830d068a36c6";
|
||||
|
||||
setenv("LIBNVME_HOSTNQN", hostnqn, 1);
|
||||
setenv("LIBNVME_HOSTID", hostid, 1);
|
||||
|
||||
r = nvme_create_root(stderr, LOG_ERR);
|
||||
if (!r)
|
||||
return false;
|
||||
|
||||
err = nvme_scan_topology(r, NULL, NULL);
|
||||
if (err) {
|
||||
if (errno != ENOENT)
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = nvme_host_get_ids(r, NULL, NULL, &hnqn, &hid);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
if (strcmp(hostnqn, hnqn)) {
|
||||
printf("json config hostnqn '%s' does not match '%s'\n", hostnqn, hnqn);
|
||||
goto out;
|
||||
}
|
||||
if (strcmp(hostid, hid)) {
|
||||
printf("json config hostid '%s' does not match '%s'\n", hostid, hid);
|
||||
goto out;
|
||||
}
|
||||
|
||||
free(hnqn);
|
||||
free(hid);
|
||||
|
||||
pass = true;
|
||||
|
||||
out:
|
||||
nvme_free_tree(r);
|
||||
return pass;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
bool pass;
|
||||
|
||||
pass = command_line();
|
||||
pass &= json_config(argv[1]);
|
||||
pass &= from_file();
|
||||
fflush(stdout);
|
||||
|
||||
exit(pass ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue