Commit 33818191 authored by Krzysztof Goreczny's avatar Krzysztof Goreczny Committed by Tomasz Zawadzki
Browse files

identify: add no-huge option



This way spdk_nvme_identify app can run in env where hugepages are not
available.
For now only NVMf tests are prepared to work without huge pages so
extend that to all identify binary calls.

Change-Id: Ie8dfe766a23f31fe2b72d2d94942554f7e0c8918
Signed-off-by: default avatarKrzysztof Goreczny <krzysztof.goreczny@dell.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26328


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarMichal Berger <michal.berger@nutanix.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Reviewed-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
parent d62f985e
Loading
Loading
Loading
Loading
+28 −6
Original line number Diff line number Diff line
@@ -2721,20 +2721,31 @@ usage(const char *program_name)
	printf("\t-z         For NVMe Zoned Namespaces, dump the full zone report (-z) or the first N entries (-z N)\n");
	printf("\t-V         enumerate VMD\n");
	printf("\t-S         socket implementation, e.g. -S uring (default is posix)\n");
	printf("\t-s         memory size in MB for DPDK\n");
	printf("\t--no-huge  SPDK is run without hugepages\n");
	printf("\t-H         show this usage\n");
}

#define IDENTIFY_GETOPT_STRING "d:gi:op:r:v:xz::HL:S:Vs:"
static const struct option g_identify_cmdline_opts[] = {
#define IDENTIFY_NO_HUGE        257
	{"no-huge", no_argument, NULL, IDENTIFY_NO_HUGE},
	{0, 0, 0, 0}
};

static int
parse_args(int argc, char **argv)
parse_args(int argc, char **argv, struct spdk_env_opts *env_opts)
{
	int op, rc;
	int op, rc, opt_index;
	long int value;

	rc = spdk_nvme_trid_entry_parse(&g_trid, "trtype:PCIe");
	if (rc < 0) {
		return 1;
	}

	while ((op = getopt(argc, argv, "d:gi:op:r:v:xz::HL:S:V")) != -1) {
	while ((op = getopt_long(argc, argv, IDENTIFY_GETOPT_STRING, g_identify_cmdline_opts,
				 &opt_index)) != -1) {
		switch (op) {
		case 'd':
			g_dpdk_mem = spdk_strtol(optarg, 10);
@@ -2815,6 +2826,17 @@ parse_args(int argc, char **argv)
				exit(EXIT_FAILURE);
			}
			break;
		case 's':
			value = spdk_strtol(optarg, 10);
			if (value < 0) {
				fprintf(stderr, "converting a string to integer failed\n");
				return -EINVAL;
			}
			env_opts->mem_size = value;
			break;
		case IDENTIFY_NO_HUGE:
			env_opts->no_huge = true;
			break;
		default:
			usage(argv[0]);
			return 1;
@@ -2848,13 +2870,13 @@ main(int argc, char **argv)
	struct spdk_env_opts		opts;
	struct spdk_nvme_ctrlr		*ctrlr;

	rc = parse_args(argc, argv);
	opts.opts_size = sizeof(opts);
	spdk_env_opts_init(&opts);
	rc = parse_args(argc, argv, &opts);
	if (rc != 0) {
		return rc;
	}

	opts.opts_size = sizeof(opts);
	spdk_env_opts_init(&opts);
	opts.name = "identify";
	opts.shm_id = g_shm_id;
	opts.mem_size = g_dpdk_mem;
+4 −2
Original line number Diff line number Diff line
@@ -41,13 +41,15 @@ $SPDK_BIN_DIR/spdk_nvme_identify -r "\
        adrfam:IPv4 \
        traddr:$NVMF_FIRST_TARGET_IP \
        trsvcid:$NVMF_PORT \
        subnqn:nqn.2014-08.org.nvmexpress.discovery" -L all
        subnqn:nqn.2014-08.org.nvmexpress.discovery" -L all \
	"${NO_HUGE[@]}"
$SPDK_BIN_DIR/spdk_nvme_identify -r "\
        trtype:$TEST_TRANSPORT \
        adrfam:IPv4 \
        traddr:$NVMF_FIRST_TARGET_IP \
        trsvcid:$NVMF_PORT \
        subnqn:nqn.2016-06.io.spdk:cnode1" -L all
        subnqn:nqn.2016-06.io.spdk:cnode1" -L all \
	"${NO_HUGE[@]}"
sync
$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1

+4 −2
Original line number Diff line number Diff line
@@ -20,10 +20,12 @@ configure_kernel_target "$NVME_SUBNQN" "$target_ip"
	adrfam:IPv4 \
	traddr:$target_ip
	trsvcid:$NVMF_PORT \
	subnqn:nqn.2014-08.org.nvmexpress.discovery"
	subnqn:nqn.2014-08.org.nvmexpress.discovery" \
	"${NO_HUGE[@]}"
$SPDK_BIN_DIR/spdk_nvme_identify -r "\
	trtype:$TEST_TRANSPORT \
	adrfam:IPv4 \
	traddr:$target_ip \
	trsvcid:$NVMF_PORT \
	subnqn:$NVME_SUBNQN"
	subnqn:$NVME_SUBNQN" \
	"${NO_HUGE[@]}"
+6 −4
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ if [ -z "${bdf}" ]; then
fi

# Expected values
nvme_serial_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Serial Number:" | awk '{print $3}')
nvme_model_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Model Number:" | awk '{print $3}')
nvme_serial_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 "${NO_HUGE[@]}" | grep "Serial Number:" | awk '{print $3}')
nvme_model_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 "${NO_HUGE[@]}" | grep "Model Number:" | awk '{print $3}')

timing_exit nvme_identify

@@ -51,14 +51,16 @@ nvmf_serial_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "\
        adrfam:IPv4 \
        traddr:$NVMF_FIRST_TARGET_IP \
        trsvcid:$NVMF_PORT \
        subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Serial Number:" | awk '{print $3}')
        subnqn:nqn.2016-06.io.spdk:cnode1" \
	"${NO_HUGE[@]}" | grep "Serial Number:" | awk '{print $3}')

nvmf_model_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "\
        trtype:$TEST_TRANSPORT \
        adrfam:IPv4 \
        traddr:$NVMF_FIRST_TARGET_IP \
        trsvcid:$NVMF_PORT \
        subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Model Number:" | awk '{print $3}')
        subnqn:nqn.2016-06.io.spdk:cnode1" \
	"${NO_HUGE[@]}" | grep "Model Number:" | awk '{print $3}')

if [ ${nvme_serial_number} != ${nvmf_serial_number} ]; then
	echo "Serial number doesn't match"
+1 −1
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ function run_nvmf_vfio_user() {
	for i in $(seq 1 $NUM_DEVICES); do
		test_traddr=/var/run/vfio-user/domain/vfio-user$i/$i
		test_subnqn=nqn.2019-07.io.spdk:cnode$i
		$SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:$TEST_TRANSPORT traddr:$test_traddr subnqn:$test_subnqn" -g -L nvme -L nvme_vfio -L vfio_pci
		$SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:$TEST_TRANSPORT traddr:$test_traddr subnqn:$test_subnqn" -g -L nvme -L nvme_vfio -L vfio_pci "${NO_HUGE[@]}"
		$SPDK_BIN_DIR/spdk_nvme_perf -r "trtype:$TEST_TRANSPORT traddr:$test_traddr subnqn:$test_subnqn" -s 256 -g -q 128 -o 4096 -w read -t 5 -c 0x2
		$SPDK_BIN_DIR/spdk_nvme_perf -r "trtype:$TEST_TRANSPORT traddr:$test_traddr subnqn:$test_subnqn" -s 256 -g -q 128 -o 4096 -w write -t 5 -c 0x2
		$SPDK_EXAMPLE_DIR/reconnect -r "trtype:$TEST_TRANSPORT traddr:$test_traddr subnqn:$test_subnqn" -g -q 32 -o 4096 -w randrw -M 50 -t 5 -c 0xE