Commit a816afaa authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

bdev_nvme: check for admin queue failures.



This will allow us to reset the controller when we get disconnect events
from the underying transports.

Change-Id: I825985219f98ff65cfcf7581757bd26db5bd08ba
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/473762


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent d786a7ec
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -211,9 +211,19 @@ bdev_nvme_poll(void *arg)
static int
bdev_nvme_poll_adminq(void *arg)
{
	int32_t rc;
	struct spdk_nvme_ctrlr *ctrlr = arg;
	struct nvme_bdev_ctrlr *nvme_bdev_ctrlr;

	rc = spdk_nvme_ctrlr_process_admin_completions(ctrlr);

	return spdk_nvme_ctrlr_process_admin_completions(ctrlr);
	if (rc < 0) {
		nvme_bdev_ctrlr = nvme_bdev_ctrlr_get(spdk_nvme_ctrlr_get_transport_id(ctrlr));
		assert(nvme_bdev_ctrlr != NULL);
		bdev_nvme_reset(nvme_bdev_ctrlr, NULL);
	}

	return rc;
}

static void
+23 −7
Original line number Diff line number Diff line
@@ -10,10 +10,8 @@ MALLOC_BLOCK_SIZE=512

rpc_py="$rootdir/scripts/rpc.py"

nvmftestinit

timing_enter bdevperf

function tgt_init()
{
	nvmfappstart "-m 0xF"

	$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192
@@ -21,10 +19,28 @@ $rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc0
	$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
	$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Malloc0
	$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT
}

nvmftestinit

timing_enter bdevperf

tgt_init

echo "[Nvme]" > $testdir/bdevperf.conf
echo "  TransportID \"trtype:$TEST_TRANSPORT adrfam:IPv4 subnqn:nqn.2016-06.io.spdk:cnode1 traddr:$NVMF_FIRST_TARGET_IP trsvcid:$NVMF_PORT\" Nvme0" >> $testdir/bdevperf.conf
$rootdir/test/bdev/bdevperf/bdevperf -c $testdir/bdevperf.conf -q 128 -o 4096 -w verify -t 1

$rootdir/test/bdev/bdevperf/bdevperf -c $testdir/bdevperf.conf -q 128 -o 4096 -w verify -t 15 -f &
bdevperfpid=$!

sleep 3
kill -9 $nvmfpid

sleep 3
tgt_init

wait $bdevperfpid
sync
rm -rf $testdir/bdevperf.conf
$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1