Commit Graph

789 Commits

Author SHA1 Message Date
Daniel Verkamp
1a37acda67 eofnl: check for extra trailing newlines
Enforce exactly one trailing \n, and fix all of the existing cases.

Change-Id: I6218e4700e90aeb647eaee78089530c79993c8c8
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-10-11 13:30:33 -07:00
Ben Walker
6b1e4e732d Drop libpciaccess and switch to DPDK PCI
This patch also drops support for automatically unbinding
devices from the kernel - run scripts/setup.sh first.

Our generic pci interface is now hidden behind include/spdk/pci.h
and implemented in lib/util/pci.c. We no longer wrap the calls
in nvme_impl.h or ioat_impl.h. The implementation now only uses
DPDK and the libpciaccess dependency has been removed. If using
a version of DPDK earlier than 16.07, enumerating devices
by class code isn't available and only Intel SSDs will be
discovered. DPDK 16.07 adds enumeration by class code and all
NVMe devices will be correctly discovered.

Change-Id: I0e8bac36b5ca57df604a2b310c47342c67dc9f3c
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-10-04 15:59:00 -07:00
Ben Walker
f4140ad023 nvme: Change the deallocate interface to generic dsm
Provide a convenience wrapper for general purpose dataset
management commands. The previous wrapper for deallocate
was difficult to use correctly and only for deallocate.

Note that the name is "dataset_management" as opposed to
"data_set_management" to match the NVMe specification.
It's questionable whether "dataset" is valid English, but
it is best to match the specification.

Change-Id: Ifc03d66dbabeabe8146968cf8a09f7ac3446ad68
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-10-04 14:36:09 -07:00
Daniel Verkamp
c20aa93181 doc: add README.md for Doxygen and online docs
Change-Id: I9af8a77ac1faccf950669f8e61c6ea4d596209c7
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-10-03 14:23:15 -07:00
Ziye Yang
c1341b0718 bdev: Add RBD support in lib/bdev
This patch will add a new bdev module, rbd.
It can make ceph rbd as the backend of iSCSI
target.

Change-Id: Id5eb3b159ee607052e3c33a2e59d721739fd9977
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
2016-09-30 15:26:28 -07:00
Changpeng Liu
9d9dc0389f iscsi: add document description about iSCSI target
Change-Id: Iaba08f45461643cbb231d50580788d24ea34a431
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
2016-09-02 09:21:58 -07:00
Daniel Verkamp
33dde51f83 doc: organize Key Functions into tables
Change-Id: I21ff868ddbea4e6819f74b7b01c344abe532ee19
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-08-15 16:07:26 -07:00
Daniel Verkamp
0d8aaedba6 doc: replace another "NVMf" with NVMe over Fabrics
Change-Id: I70ce4d61539b5c27d7672b2bac04c6b33a7ca51b
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-08-15 16:07:26 -07:00
Daniel Verkamp
0fc7daffe5 Replace "NVMf" with "NVMe over Fabrics" in docs
Use the final official spec name rather than a non-standard
abbreviation.

Change-Id: I4d797294be35b2fbf7b39570ea3246eb71c8d8ce
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-08-08 16:35:11 -07:00
Ben Walker
9ac860437a nvmf: Update the getting started guide
Change-Id: Iec2e19f487f5f0da141f0615be0aff9b7f9c3f2e
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-08-05 09:04:22 -07:00
Daniel Verkamp
3f80d55199 CONFIG: rename CONFIG_NVMF to CONFIG_RDMA
The NVMf target is being refactored to split the RDMA transport-specific
code into its own file.  Once this is complete, we should be able to
plug in other transports and build the NVMf target without any RDMA
dependency if desired.

To enable this, change the CONFIG option to RDMA; it still controls
whether the whole NVMf target is built for now, but once the RDMA
dependency is actually made optional, we will be able to build the
generic NVMf target code without libibverbs installed.

Change-Id: I8cd90a9aaa85dcefcc9b0f8f2e7b6af21958b2a8
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-07-14 12:58:17 -07:00
Ben Walker
e051bc63b4 docs: Update header and footer links in documentation
Change-Id: I36be168c666e7eb7217b96117c89eafe31cd09c7
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-07-01 14:51:35 -07:00
Daniel Verkamp
53b31afe7c doc/nvmf: add description of how to enable NVMf
Change-Id: I4270a8fb8da847ee62b107f7cb2c0fdea1450fa6
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-06-08 16:39:39 -07:00
Ben Walker
a4b857213b nvmf: Rename InitiatorGroup config section to Host
The specification refers to this concept as a Host,
so use that term. This only changes the configuration
file usage. Initiator groups are still referenced in
the code and will be removed later.

Change-Id: I897f4dbdfb65d94da1e5a77434fc07a2c18bcdc2
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
2016-06-08 16:37:32 -07:00
Daniel Verkamp
ec89af7e2c nvmf: add some basic user docs
Change-Id: I543ddcdf1e761739e51322d155471a62acc6433c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-06-07 10:16:08 -07:00
Daniel Verkamp
149ee30ee8 doc/nvme: move pages to separate text files
This makes it easier to find the larger doc comments that produce separate
pages.

It also allows removing the lib/nvme directory from the Doxyfile, so
only the public API headers are used to generate documentation.

Change-Id: I8c46edb8067a91dda5b23fb0864efd3dd8aaeba5
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-29 10:49:06 -07:00
Daniel Verkamp
6d13f8d555 doc: create per-module directories
Prepare for adding more text files per module.

Change-Id: If08c61e2572c802d2d75a0c1b2d19d0f275885e3
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-29 10:34:54 -07:00
Daniel Verkamp
e7499dc328 doc: make ioat and nvme section names unique
Fix section name collisions after combining Doxyfiles.

Change-Id: I9b717598f74839c0fd80415fc5c46f636801a93b
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-29 10:20:47 -07:00
Daniel Verkamp
982095e51f doc: use spdk.io stylesheets
Some styling needs to be applied via the Doxygen stylesheet, since the
class names don't match up with what Bootstrap uses.

Change-Id: Ie7b38259496e262752750235b0630d59b00ae492
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 14:00:15 -07:00
Daniel Verkamp
c843092091 doc: add default Doxygen CSS
Prepare for customizations.

Change-Id: If35d604e71d5cfe814494d542c6ce4c632ac9df6
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 14:00:15 -07:00
Daniel Verkamp
32526ba69f doc: enable Doxygen autobrief
This treats the first line of each doc comment as the brief for that
function automatically, rather than requiring an explicit \brief tag.

Change-Id: Ia264c1611ca4b367aeda2b7500cd60c4b72fb364
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 14:00:15 -07:00
Daniel Verkamp
a7cab063bc doc: add links and intro blurb to main page
Change-Id: Icc4e3add7d36804de968b4ad2136af773d044001
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 14:00:12 -07:00
Daniel Verkamp
60811b5bf7 doc: add Doxygen-generated header.html
Prepare to customize the header.

Change-Id: I97ab3d3ea57ca843df9a1f7d76bf00172bea02e7
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 10:06:37 -07:00
Daniel Verkamp
4b1f79b5e7 doc: merge ioat and nvme into a single Doxyfile
Add a top-level index page and convert the I/OAT and NVMe main pages
into normal pages.

Change-Id: I4e7c8d2fd43303a8aa56de921037dac96fe8a1a5
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-25 09:59:39 -07:00
Daniel Verkamp
cf0871a57e ioat: make channel allocation explicit
Add a parameter to each I/OAT library function that requires a channel
instead of implicitly using the thread-local channel registration model.

I/OAT channels are already reported by the spdk_ioat_probe() attach
callback, so no infrastructure for channel allocation is necessary.

Change-Id: I8731126fcaea9fe2bafc41a3f75c969a100ef8f0
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-15 09:50:17 -07:00
Daniel Verkamp
3272320c73 nvme: make I/O queue allocation explicit
The previous method for registering I/O queues did not allow the user
to specify queue priority for weighted round robin arbitration, and it
limited the application to one queue per controller per thread.

Change the API to require explicit allocation of each queue for each
controller using the new function spdk_nvme_ctrlr_alloc_io_qpair().

Each function that submits a command on an I/O queue now takes an
explicit qpair parameter rather than implicitly using the thread-local
queue.

This also allows the application to allocate different numbers of
threads per controller; previously, the number of queues was capped at
the smallest value supported by any attached controller.

Weighted round robin arbitration is not supported yet; additional
changes to the controller startup process are required to enable
alternate arbitration methods.

Change-Id: Ia33be1050a6953bc5a3cca9284aefcd95b01116e
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-03-14 16:00:54 -07:00
Daniel Verkamp
9322c25808 doc: add spdk/ path to Doxygen indexes
Reference the public headers in the way that apps should include them
(e.g. spdk/nvme.h rather than just nvme.h).

Change-Id: I0489d906e9c55ff00ffa4e8c9532b0941ce69449
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-02-17 12:18:27 -07:00
Daniel Verkamp
bfd92d4719 nvme: update doc index file with spdk_ prefixes
Change-Id: I5745d1f9af63547b05f4dfdd364f18bcf615f2b0
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-02-11 13:45:58 -07:00
Daniel Verkamp
5cab054f4e ioat: add spdk_ prefixes
Change-Id: Ic42f204a9a4e65661931af2220e8f8ac77242a69
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-02-11 12:35:57 -07:00
Daniel Verkamp
8374a727a9 nvme: refactor nvme_attach() into nvme_probe()
The new probing API will find all NVMe devices on the system and ask the
caller whether to attach to each one.  The caller will then receive a
callback once each controller has finished initializing and has been
attached to the driver.

This will enable cleanup of the PCI abstraction layer (enabling us to
use DPDK PCI functionality) as well as allowing future work on parallel
NVMe controller startup and PCIe hotplug support.

Change-Id: I3cdde7bfab0bc0bea1993dd549b9b0e8d36db9be
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-02-03 11:15:31 -07:00
Daniel Verkamp
c02b179490 Remove year from copyright headers.
Also add a space between Copyright and (c).

The copyright year can be determined using git metadata.

Also remove the duplicated "All rights reserved." - every instance of
this line already has a corresponding "All rights reserved" immediately
below it, except for examples/ioat/kperf/kmod/dma_perf.c, where I have
added it manually.

Performed using this command:

git ls-files | xargs sed -i -e 's/Copyright(c) \(.*\) Intel Corporation. All rights reserved./Copyright (c) Intel Corporation./'

Change-Id: I3779f404966800709024eb1eb66a50068af2716c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-28 08:54:18 -07:00
Daniel Verkamp
b8d31e2454 doc: define away __attribute__ for Doxygen
Doxygen doesn't understand GCC attributes, so use the PREDEFINED setting
to define it to nothing.  Otherwise, Doxygen's parser gets confused on
e.g. packed structs.

Change-Id: I25b2a5fd7cfcc5014408c93d1913128e863dc60c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-01-22 08:56:51 -07:00
Daniel Verkamp
d4ab30ba33 ioat: add user-mode Intel I/OAT driver
The ioat driver supports DMA engine copy offload hardware available on
Intel Xeon platforms.

Change-Id: Ida0b17b25816576948ddb1b0443587e0f09574d4
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-12-09 10:14:15 -07:00
Daniel Verkamp
8836b6f681 doc: tweak Doxygen footer
Remove the $generatedby string, which contains the current date, causing
diffs whenever the docs are regenerated even if there is no new content.

Change-Id: I2a45a086d464bb23cac4b9ffc802666722c45d06
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-11-10 09:31:16 -07:00
Daniel Verkamp
e098976c55 doc: remove reference to nonexistent images dir
Change-Id: Idedc1d0ef978739b1dfb8937b824c7326832e3a7
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-24 11:24:16 -07:00
Daniel Verkamp
3302fd86f0 doc: use doxygen in quiet mode
Make doxygen only output warnings and errors.  The other informational
output is not that useful.

Change-Id: Iecdcc45ce3a64905815326734e4783ddc45b654b
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-24 11:24:16 -07:00
Daniel Verkamp
ad74310a3a doc: update Doxyfile.nvme
Updated using 'doxyfile -u Doxyfile.nvme'.

No configuration value changes.

Change-Id: I7ad043cb3320804a419ef6353436ebe4572f9a37
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-22 09:24:40 -07:00
Daniel Verkamp
5b88369cd2 doc: add include/spdk to Doxygen path
Fixes broken links on the main page (public header nvme.h is now in
include/spdk rather than lib/nvme).

Change-Id: If85f9d676602d09f45b6a7607df5a4529f19c7ca
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2015-09-21 15:53:14 -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