Skip to content

Commit

Permalink
nvme: make SG_IO support optional
Browse files Browse the repository at this point in the history
Translation SCSI commands to NVMe commands is rather pointless in general
as applications must not expext to be able to use SCSI commands on a
generic block device.

Make the huge translation layer optional and hope no one will ever enable
it in the future.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Jan 12, 2016
1 parent bfd8947 commit 4490733
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
11 changes: 11 additions & 0 deletions drivers/nvme/host/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@ config BLK_DEV_NVME

To compile this driver as a module, choose M here: the
module will be called nvme.

config BLK_DEV_NVME_SCSI
bool "SCSI emulation for NVMe device nodes"
depends on BLK_DEV_NVME
---help---
This adds support for the SG_IO ioctl on the NVMe character
and block devices nodes, as well a a translation for a small
number of selected SCSI commands to NVMe commands to the NVMe
driver. If you don't know what this means you probably want
to say N here, and if you know what it means you probably
want to say N as well.
3 changes: 2 additions & 1 deletion drivers/nvme/host/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

obj-$(CONFIG_BLK_DEV_NVME) += nvme.o

nvme-y += core.o pci.o scsi.o lightnvm.o
nvme-y += core.o pci.o lightnvm.o
nvme-$(CONFIG_BLK_DEV_NVME_SCSI) += scsi.o
2 changes: 2 additions & 0 deletions drivers/nvme/host/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -467,10 +467,12 @@ static int nvme_ioctl(struct block_device *bdev, fmode_t mode,
return nvme_user_cmd(ns->ctrl, ns, (void __user *)arg);
case NVME_IOCTL_SUBMIT_IO:
return nvme_submit_io(ns, (void __user *)arg);
#ifdef CONFIG_BLK_DEV_NVME_SCSI
case SG_GET_VERSION_NUM:
return nvme_sg_get_version_num((void __user *)arg);
case SG_IO:
return nvme_sg_io(ns, (void __user *)arg);
#endif
default:
return -ENOTTY;
}
Expand Down

0 comments on commit 4490733

Please sign in to comment.