#
075790eb |
| 24-Feb-2016 |
Keith Busch <keith.busch@intel.com> |
NVMe: Use IDA for namespace disk naming
A namespace may be detached from a controller, but a user may be holding a reference to it. Attaching a new namespace with the same NSID will create duplicate
NVMe: Use IDA for namespace disk naming
A namespace may be detached from a controller, but a user may be holding a reference to it. Attaching a new namespace with the same NSID will create duplicate names when using the NSID to name the disk.
This patch uses an IDA that is released only when the last reference is released instead of using the namespace ID.
Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
931e1c22 |
| 26-Feb-2016 |
Ming Lin <ming.l@ssi.samsung.com> |
nvme: expose cntlid in sysfs
For NVMe over Fabrics, the cntlid will be used by systemd/udev to create link to the device, for example,
/dev/disk/by-path/<fabrics-info>-<cntlid>-<namespace> -> /dev/
nvme: expose cntlid in sysfs
For NVMe over Fabrics, the cntlid will be used by systemd/udev to create link to the device, for example,
/dev/disk/by-path/<fabrics-info>-<cntlid>-<namespace> -> /dev/nvme0n1
Signed-off-by: Ming Lin <ming.l@ssi.samsung.com> Reviewed-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
1cb3cce5 |
| 29-Feb-2016 |
Christoph Hellwig <hch@lst.de> |
nvme: return the whole CQE through the request passthrough interface
Both LighNVM and NVMe over Fabrics need to look at more than just the status and result field.
Signed-off-by: Christoph Hellwig
nvme: return the whole CQE through the request passthrough interface
Both LighNVM and NVMe over Fabrics need to look at more than just the status and result field.
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Matias Bj?rling <m@bjorling.me> Reviewed-by: Jay Freyensee <james.p.freyensee@intel.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
4f76d0e4 |
| 11-Feb-2016 |
Keith Busch <keith.busch@intel.com> |
NVMe: Fix io incapable return values
The function returns true when the controller can't handle IO.
Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com
NVMe: Fix io incapable return values
The function returns true when the controller can't handle IO.
Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
9f2482b9 |
| 10-Feb-2016 |
Ming Lin <ming.l@ssi.samsung.com> |
nvme: split dev_list_lock
Split dev_list_lock into one in the core and one in the PCI driver.
Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Review
nvme: split dev_list_lock
Split dev_list_lock into one in the core and one in the PCI driver.
Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Ming Lin <ming.l@ssi.samsung.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
e439bb12 |
| 10-Feb-2016 |
Sagi Grimberg <sagig@mellanox.com> |
nvme/host: reference the fabric module for each bdev open callout
We don't want to be able to unload the fabric driver when we have openened referenced to our namespaces. Thus, for each nvme_open we
nvme/host: reference the fabric module for each bdev open callout
We don't want to be able to unload the fabric driver when we have openened referenced to our namespaces. Thus, for each nvme_open we take a reference on the fabric driver and put it in nvme_release. This behavior is consistent with the scsi model.
This resolves the panic when unloading a fabric module with mpath holders.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ian Bakshan <ianb@mellanox.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Ming Lin <ming.l@ssi.samsung.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
25646264 |
| 04-Jan-2016 |
Keith Busch <keith.busch@intel.com> |
NVMe: Remove queue freezing on resets
NVMe submits all commands through the block layer now. This means we can let requests queue at the blk-mq hardware context since there is no path that bypasses
NVMe: Remove queue freezing on resets
NVMe submits all commands through the block layer now. This means we can let requests queue at the blk-mq hardware context since there is no path that bypasses this anymore so we don't need to freeze the queues anymore. The driver can simply stop the h/w queues from running during a reset instead.
This also fixes a WARN in percpu_ref_reinit when the queue was unfrozen with requeued requests.
Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
69d3b8ac |
| 24-Dec-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: synchronize access to ctrl->namespaces
Currently traversal and modification of ctrl->namespaces happens completely unsynchronized, which can be fixed by the addition of a simple mutex.
Note:
nvme: synchronize access to ctrl->namespaces
Currently traversal and modification of ctrl->namespaces happens completely unsynchronized, which can be fixed by the addition of a simple mutex.
Note: nvme_dev_ioctl will be handled in the next patch.
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
363c9aac |
| 24-Dec-2015 |
Sagi Grimberg <sagig@mellanox.com> |
nvme: Move nvme_freeze/unfreeze_queues to nvme core
Nothing pci specific about them and We'll need them exported in other transports too.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-of
nvme: Move nvme_freeze/unfreeze_queues to nvme core
Nothing pci specific about them and We'll need them exported in other transports too.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
2b9b6e86 |
| 22-Dec-2015 |
Keith Busch <keith.busch@intel.com> |
NVMe: Export namespace attributes to sysfs
Exposes the NGUID, EUI-64, and NSID to sysfs entries under the disk's kobject.
Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sagi Grimbe
NVMe: Export namespace attributes to sysfs
Exposes the NGUID, EUI-64, and NSID to sysfs entries under the disk's kobject.
Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
7688faa6 |
| 28-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: factor out a few helpers from req_completion
We'll need them in other places later.
Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by:
nvme: factor out a few helpers from req_completion
We'll need them in other places later.
Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
53029b04 |
| 28-Nov-2015 |
Keith Busch <keith.busch@intel.com> |
NVMe: Remove device management handles on remove
We don't want to allow new references to open on a device that is removed. This ties the lifetime of these handles to the physical device's presence
NVMe: Remove device management handles on remove
We don't want to allow new references to open on a device that is removed. This ties the lifetime of these handles to the physical device's presence rather than to the open reference count.
Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
540c801c |
| 22-Oct-2015 |
Keith Busch <keith.busch@intel.com> |
NVMe: Implement namespace list scanning
The NVMe 1.1 specification provides an identify mode to return a list of active namespaces. This is more efficient to discover which namespace identifiers are
NVMe: Implement namespace list scanning
The NVMe 1.1 specification provides an identify mode to return a list of active namespaces. This is more efficient to discover which namespace identifiers are active on a controller, providing potentially significant improvement in scan time for controllers with sparesly populated namespaces.
Signed-off-by: Keith Busch <keith.busch@intel.com> [hch: add quirk for the broken Qemu Identify implementation. To be relaxed later] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
6bf25d16 |
| 20-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: switch abort_limit to an atomic_t
There is no lock to sychronize access to the abort_limit field of struct nvme_ctrl, so switch it to an atomic_t.
Signed-off-by: Christoph Hellwig <hch@lst.de
nvme: switch abort_limit to an atomic_t
There is no lock to sychronize access to the abort_limit field of struct nvme_ctrl, so switch it to an atomic_t.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
297465c8 |
| 26-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: add NVME_SC_CANCELLED
To properly document how we are using a negative Linux error value to communicate request cancellations inside the driver.
Signed-off-by: Christoph Hellwig <hch@lst.de>
nvme: add NVME_SC_CANCELLED
To properly document how we are using a negative Linux error value to communicate request cancellations inside the driver.
Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
9a0be7ab |
| 26-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: refactor set_queue_count
Split out a helper that just issues the Set Features and interprets the result which can go to common code, and document why we are ignoring non-timeout error returns
nvme: refactor set_queue_count
Split out a helper that just issues the Set Features and interprets the result which can go to common code, and document why we are ignoring non-timeout error returns in the PCIe driver.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
f3ca80fc |
| 28-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: move chardev and sysfs interface to common code
For this we need to add a proper controller init routine and a list of all controllers that is in addition to the list of PCIe controllers, whic
nvme: move chardev and sysfs interface to common code
For this we need to add a proper controller init routine and a list of all controllers that is in addition to the list of PCIe controllers, which stays in pci.c. Note that we remove the sysfs device when the last reference to a controller is dropped now - the old code would have kept it around longer, which doesn't make much sense.
This requires a new ->reset_ctrl operation to implement controleller resets, and a new ->write_reg32 operation that is required to implement subsystem resets. We also now store caches copied of the NVMe compliance version and the flag if a controller is attached to a subsystem or not in the generic controller structure now.
Signed-off-by: Christoph Hellwig <hch@lst.de> [Fixes for pr merge] Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
5bae7f73 |
| 28-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: move namespace scanning to common code
The namespace scanning code has been mostly generic already, we just need to store a pointer to the tagset in the nvme_ctrl structure, and add a method t
nvme: move namespace scanning to common code
The namespace scanning code has been mostly generic already, we just need to store a pointer to the tagset in the nvme_ctrl structure, and add a method to check if a controller is I/O incapable. The latter will hopefully be replaced by a proper controller state machine soon.
Signed-off-by: Christoph Hellwig <hch@lst.de> [Fixed pr conflicts] Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
7fd8930f |
| 28-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: add a common helper to read Identify Controller data
And add the 64-bit register read operation for it.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@i
nvme: add a common helper to read Identify Controller data
And add the 64-bit register read operation for it.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
5fd4ce1b |
| 28-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: move nvme_{enable,disable,shutdown}_ctrl to common code
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
|
#
106198ed |
| 26-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: add explicit quirk handling
Add an enum for all workarounds not in the spec and identify the affected controllers at probe time.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: K
nvme: add explicit quirk handling
Add an enum for all workarounds not in the spec and identify the affected controllers at probe time.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
1673f1f0 |
| 26-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: move block_device_operations and ns/ctrl freeing to common code
This moves the block_device_operations over to common code mostly as-is. The only change is that the ns and ctrl refcounting go
nvme: move block_device_operations and ns/ctrl freeing to common code
This moves the block_device_operations over to common code mostly as-is. The only change is that the ns and ctrl refcounting got some small refcounting to have wrappers around the kref_put operations.
A new free_ctrl operation is added to allow the PCI driver to free it's ressources on the final drop.
Signed-off-by: Christoph Hellwig <hch@lst.de> [Moved the integrity and pr changes due to merge conflict] Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
0b7f1f26 |
| 23-Oct-2015 |
Keith Busch <keith.busch@intel.com> |
nvme: use the block layer for userspace passthrough metadata
Use the integrity API to pass through metadata from userspace. For PI enabled devices this means that we now validate the reftag, which
nvme: use the block layer for userspace passthrough metadata
Use the integrity API to pass through metadata from userspace. For PI enabled devices this means that we now validate the reftag, which seems like an unintentional ommission in the old code.
Thanks to Keith Busch for testing and fixes.
Signed-off-by: Christoph Hellwig <hch@lst.de> [Skip metadata setup on admin commands] Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
4160982e |
| 20-Nov-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: split __nvme_submit_sync_cmd
Add a separate nvme_submit_user_cmd for commands that directly DMA to or from userspace. We'll add metadata support to that soon and the common version would beco
nvme: split __nvme_submit_sync_cmd
Add a separate nvme_submit_user_cmd for commands that directly DMA to or from userspace. We'll add metadata support to that soon and the common version would become too messy.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|
#
22944e99 |
| 16-Oct-2015 |
Christoph Hellwig <hch@lst.de> |
nvme: move nvme_setup_flush and nvme_setup_rw to common code
And mark them inline so that we don't slow down the I/O submission path by having to turn it into a forced out of line call.
Signed-off-
nvme: move nvme_setup_flush and nvme_setup_rw to common code
And mark them inline so that we don't slow down the I/O submission path by having to turn it into a forced out of line call.
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
show more ...
|