Commit Graph

116 Commits

Author SHA1 Message Date
Daniel Verkamp
97601bb358 nvme: simplify supported log page code
Change-Id: If16b1c237dc304378fe0742651a78d3ec0850665
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-15 13:45:16 -07:00
Daniel Verkamp
ab17933468 nvme: represent log_page as uint8_t consistently
Change nvme_ctrlr_is_log_page_supported() to match
nvme_ctrlr_cmd_get_log_page().

Change-Id: I4c8a1f11044b083f8f8990ef40a4f789fa3c24e3
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-15 13:44:14 -07:00
Cunyin Chang
9945c00cf2 NVMe: Add public API to get log pages.
1 Add supported log pages data structure.
2 Bulid up supported log pages when NVME start.
3 Provide unified API for getting log pages.
3 Unit test suit optimization base on above modification.

Change-Id: I03cdb93f5c94e6897510d7f19bc7d9f4e70f9222
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
2016-01-15 09:10:35 +08:00
Daniel Verkamp
2ced60e9bf nvme: return number of completions processed
nvme_ctrlr_process_io_completions() and
nvme_ctrlr_process_admin_completions() now return the number of
completions processed.

This also adds the possibility of returning an error from the
process_*_completions functions (currently unused, but this at least
gets the API ready in case error conditions are added later).

Change-Id: I1b32ee4f2f3c1c474d646fa2d6b8b7bbb769785f
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-11 14:44:22 -07:00
Daniel Verkamp
b96536e74a nvme: check request allocation when submitting AER
Previously, if nvme_allocate_request() failed in
nvme_ctrlr_construct_and_submit_aer(), there was no error checking, so a
NULL pointer would be dereferenced.

Add a return value to nvme_ctrlr_construct_and_submit_aer() so we can
signal failure to the caller.  This can only really be reasonably
handled during initialization; when resubmitting a completed AER later,
there is nowhere to report failure, so the AER will just remain
unsubmitted.

Change-Id: I413eb6c21be01cd9a61e67f62f2d0b7170eabaa3
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-06 13:51:15 -07:00
Daniel Verkamp
c8f27b9e6e nvme: mark a few more functions static
nvme_qpair_submit_tracker() and nvme_qpair_manual_complete_request() are
only used from within nvme_qpair.c, so they can be static.

nvme_qpair_submit_tracker() is moved up to avoid needing a declaration
(no other code change).

nvme_ctrlr_hw_reset() is only used from within nvme_ctrlr.c, so it can
be static.

Change-Id: I9a7953d7baaec76e875dd535daf557ea24bef801
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-12-23 08:59:49 -07:00
Daniel Verkamp
7e069500ad nvme: remove unnecessary delays
These delays are left over from early development. They are completely
unnecessary and not based on anything in the NVMe spec.

Startup time should be slightly improved (on the order of 100 ms in
normal cases).

Change-Id: I9068b1a0f42feabcfe656d68be91e05a56cc53a3
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-12-23 08:52:33 -07:00
Daniel Verkamp
668847e150 nvme: add max completions limit to I/O polling
nvme_ctrlr_process_io_completions() now takes a second parameter,
max_completions, to let the user limit the number of I/Os completed on
each poll.

If there are many I/Os waiting to be completed, the
nvme_ctrlr_process_io_completions() function could run for a long time
before returning control to the user, so the max_completions parameter
lets the user have more control of latency.

Change-Id: I3173059d94ec1cc5dbb636fc0ffd3dc09f3bfe4b
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-11-05 15:07:52 -07:00
Daniel Verkamp
bc185fe7dc nvme: convert is_resetting to bool
It was previously uint32_t because it was accessed with special
uint32_t-only atomic read/write helper functions, but that was replaced
with normal variable accesses protected by a mutex.

Change-Id: I304a7ef8c723cb33fd08110b697f848823a163e7
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-11-05 12:48:55 -07:00
Daniel Verkamp
a945f60c79 build: enable signed-vs-unsigned compare warning
Change-Id: I93f069241cb74b3ec7d272bc390998372c376b16
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-11-02 14:40:22 -07:00
Liang Yan
2bec440057 nvme: Change some strange alignment in nvme_ctrlr.c
Change-Id: I295d1864eaf8233df0678c3df948ac353613b27d
Signed-off-by: Liang Yan <liangx.yan@intel.com>
2015-09-29 14:01:44 -07:00
Daniel Verkamp
3181a61450 nvme: replace stray printf with nvme_printf
This is the only place that was using printf directly in the NVMe
library.  Replace it with the official nvme_printf logging mechanism.

Change-Id: I689a7c0854b5e47eb357150f814e347cd44be79c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-23 16:25:16 -07:00
Daniel Verkamp
18ce432337 nvme: simplify nvme_ctrlr_construct_admin_qpairs
Remove unnecessary local variables.

Change-Id: Iddcbe24f0a704b6576c9139734258a27a6d272c6
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-22 10:12:33 -07:00
Daniel Verkamp
d7dda8ec63 nvme: delete outdated comments about xfer size
This is calculated elsewhere now, so remove the comments around
nvme_qpair_construct calls.

Change-Id: I2dc4956a9e250b88e62038bc55cdd315940ad391
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-22 09:40:53 -07:00
Daniel Verkamp
4f939758ea nvme: remove dead store
rc is reinitialized before it is ever read.

Change-Id: I9abbc256fb06022f3024b0aa3827be02a273f20a
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-22 09:39:00 -07:00
Daniel Verkamp
1010fb3af1 SPDK: Initial check-in
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-21 08:52:41 -07:00