Spdk/lib/nvme
Michal Berger ca0339d8e5 nvme_cuse: Return ENOTTY in case unsupported ioctl is sent to a device
Latest nvme-cli (>= 1.13) fails to issue commands towards SPDK's cuse
ctrl device, e.g.:

$ nvme get-feature /dev/spdk/nvme0 -f 1 -s 1 -l 100
nvme_cuse.c: 654:cuse_ctrlr_ioctl: *ERROR*: Unsupported IOCTL 0x4E40.
get-namespace-id: Invalid argument

The reason is because nvme-cli now also sends NVME_IOCTL_ID to the
target device to determine if it's indeed a controller or a ns. In
case kernel returns ENOTTY then nvme-cli considers the device to be
a controller. Since cuse_ctrlr_ioctl() returns EINVAL in such a case
the nvme-cli fails.

To avoid this simply replace EINVAL with ENOTTY for the ioctls that
may be not supported by ctrl or ns device.

nvme-cli commit in question:
fa2b91da74

Signed-off-by: Michal Berger <michalx.berger@intel.com>
Change-Id: I29003864bc2a5c1a8906d6d01beba3d6f4e31b0e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8531
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2021-07-13 09:00:05 +00:00
..
Makefile lib/nvme: Add support for Simple Copy Command 2021-05-14 09:59:54 +00:00
nvme_ctrlr_cmd.c lib/nvme: Do not retry aborts if ctrlr is failed. 2021-07-06 19:44:59 +00:00
nvme_ctrlr_ocssd_cmd.c nvme: Move nsdata to namespace structure 2021-03-02 08:06:15 +00:00
nvme_ctrlr.c nvme: change nvme_transport_ctrlr_delete_io_qpair to void 2021-07-07 07:27:40 +00:00
nvme_cuse.c nvme_cuse: Return ENOTTY in case unsupported ioctl is sent to a device 2021-07-13 09:00:05 +00:00
nvme_cuse.h lib/nvme: add RPC for interacting with CUSE devices 2019-10-24 23:43:59 +00:00
nvme_fabric.c nvme/fabrics: Fix trid trstring populate 2021-07-05 14:45:11 +00:00
nvme_internal.h nvme: change nvme_transport_ctrlr_delete_io_qpair to void 2021-07-07 07:27:40 +00:00
nvme_io_msg.c nvme: only process io_msg in primary process 2021-04-22 01:06:02 +00:00
nvme_io_msg.h lib/nvme: update io msg producers on ns manage 2020-06-05 09:01:44 +00:00
nvme_ns_cmd.c lib/nvme: Add support for Simple Copy Command 2021-05-14 09:59:54 +00:00
nvme_ns_ocssd_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ns.c nvme: introduce function to get nguid 2021-07-09 07:02:11 +00:00
nvme_opal_internal.h nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
nvme_opal.c nvme/opal: check Security Protocol 00h before sending TCG SP 2021-06-04 19:57:36 +00:00
nvme_pcie_common.c nvme: always return success from delete_io_qpair 2021-07-07 07:27:40 +00:00
nvme_pcie_internal.h nvme/pcie: move nvme_pcie_qpair_submit_request() to pcie common layer 2021-06-08 08:28:44 +00:00
nvme_pcie.c env: only pass failing address to spdk_pci_error_handler 2021-06-15 08:34:28 +00:00
nvme_poll_group.c nvme: Add functions to get/free poll group statistics 2021-04-13 21:30:52 +00:00
nvme_qpair.c nvme: use spdk_strerror to report CQ transport errors 2021-07-05 14:45:34 +00:00
nvme_quirks.c nvme: add quirks for new RedHat QEMU NVMe dev/vendor ID 2021-06-11 07:22:10 +00:00
nvme_rdma.c nvme: do not try to resubmit requests on error 2021-06-17 09:02:14 +00:00
nvme_tcp.c nvme_tcp: Add data pdu crc32c offloading in receving side by Accel framework. 2021-06-15 08:34:58 +00:00
nvme_transport.c nvme: change nvme_transport_ctrlr_delete_io_qpair to void 2021-07-07 07:27:40 +00:00
nvme_vfio_user.c nvme/vfio-user: use the common request submission function 2021-06-09 07:21:31 +00:00
nvme_zns.c nvme: Move nsdata_zns to namespace structure 2021-03-02 08:06:15 +00:00
nvme.c nvme: Add new detach to a detach context while it is being polled 2021-06-30 22:54:19 +00:00
spdk_nvme.map nvme: introduce function to get nguid 2021-07-09 07:02:11 +00:00