markdownlint: enable rule MD005
MD005 - Inconsistent indentation for list items at the same level Fixed all MD005 errors Signed-off-by: wawryk <maciejx.wawryk@intel.com> Change-Id: If6a12d6dab938094394a72c804f2a028f1c40f45 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8995 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
e5b5eabe82
commit
1df1583be5
72
CHANGELOG.md
72
CHANGELOG.md
@ -1385,11 +1385,11 @@ of logical blocks for write operation.
|
||||
|
||||
New zone-related fields were added to the result of the `get_bdevs` RPC call:
|
||||
|
||||
- `zoned`: indicates whether the device is zoned or a regular
|
||||
- `zoned`: indicates whether the device is zoned or a regular
|
||||
block device
|
||||
- `zone_size`: number of blocks in a single zone
|
||||
- `max_open_zones`: maximum number of open zones
|
||||
- `optimal_open_zones`: optimal number of open zones
|
||||
- `zone_size`: number of blocks in a single zone
|
||||
- `max_open_zones`: maximum number of open zones
|
||||
- `optimal_open_zones`: optimal number of open zones
|
||||
|
||||
The `zoned` field is a boolean and is always present, while the rest is only available for zoned
|
||||
bdevs.
|
||||
@ -2109,19 +2109,19 @@ for which the memory is contiguous in the physical memory address space.
|
||||
|
||||
The following functions were removed:
|
||||
|
||||
- spdk_pci_nvme_device_attach()
|
||||
- spdk_pci_nvme_enumerate()
|
||||
- spdk_pci_ioat_device_attach()
|
||||
- spdk_pci_ioat_enumerate()
|
||||
- spdk_pci_virtio_device_attach()
|
||||
- spdk_pci_virtio_enumerate()
|
||||
- spdk_pci_nvme_device_attach()
|
||||
- spdk_pci_nvme_enumerate()
|
||||
- spdk_pci_ioat_device_attach()
|
||||
- spdk_pci_ioat_enumerate()
|
||||
- spdk_pci_virtio_device_attach()
|
||||
- spdk_pci_virtio_enumerate()
|
||||
|
||||
They were replaced with generic spdk_pci_device_attach() and spdk_pci_enumerate() which
|
||||
require a new spdk_pci_driver object to be provided. It can be one of the following:
|
||||
|
||||
- spdk_pci_nvme_get_driver()
|
||||
- spdk_pci_ioat_get_driver()
|
||||
- spdk_pci_virtio_get_driver()
|
||||
- spdk_pci_nvme_get_driver()
|
||||
- spdk_pci_ioat_get_driver()
|
||||
- spdk_pci_virtio_get_driver()
|
||||
|
||||
spdk_pci_hook_device() and spdk_pci_unhook_device() were added. Those allow adding a virtual
|
||||
spdk_pci_device into the SPDK PCI subsystem. A virtual device calls provided callbacks for
|
||||
@ -2300,12 +2300,12 @@ Dropped support for DPDK 16.07 and earlier, which SPDK won't even compile with r
|
||||
|
||||
The following RPC commands deprecated in the previous release are now removed:
|
||||
|
||||
- construct_virtio_user_scsi_bdev
|
||||
- construct_virtio_pci_scsi_bdev
|
||||
- construct_virtio_user_blk_bdev
|
||||
- construct_virtio_pci_blk_bdev
|
||||
- remove_virtio_scsi_bdev
|
||||
- construct_nvmf_subsystem
|
||||
- construct_virtio_user_scsi_bdev
|
||||
- construct_virtio_pci_scsi_bdev
|
||||
- construct_virtio_user_blk_bdev
|
||||
- construct_virtio_pci_blk_bdev
|
||||
- remove_virtio_scsi_bdev
|
||||
- construct_nvmf_subsystem
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
@ -2489,11 +2489,11 @@ respectively.
|
||||
|
||||
The following RPC commands have been deprecated:
|
||||
|
||||
- construct_virtio_user_scsi_bdev
|
||||
- construct_virtio_pci_scsi_bdev
|
||||
- construct_virtio_user_blk_bdev
|
||||
- construct_virtio_pci_blk_bdev
|
||||
- remove_virtio_scsi_bdev
|
||||
- construct_virtio_user_scsi_bdev
|
||||
- construct_virtio_pci_scsi_bdev
|
||||
- construct_virtio_user_blk_bdev
|
||||
- construct_virtio_pci_blk_bdev
|
||||
- remove_virtio_scsi_bdev
|
||||
|
||||
The `construct_virtio_*` ones were replaced with a single `construct_virtio_dev`
|
||||
command that can create any type of Virtio bdev(s). `remove_virtio_scsi_bdev`
|
||||
@ -2510,12 +2510,12 @@ Added jsonrpc-client C library intended for issuing RPC commands from applicatio
|
||||
|
||||
Added API enabling iteration over JSON object:
|
||||
|
||||
- spdk_json_find()
|
||||
- spdk_json_find_string()
|
||||
- spdk_json_find_array()
|
||||
- spdk_json_object_first()
|
||||
- spdk_json_array_first()
|
||||
- spdk_json_next()
|
||||
- spdk_json_find()
|
||||
- spdk_json_find_string()
|
||||
- spdk_json_find_array()
|
||||
- spdk_json_object_first()
|
||||
- spdk_json_array_first()
|
||||
- spdk_json_next()
|
||||
|
||||
### Blobstore
|
||||
|
||||
@ -3282,7 +3282,7 @@ in app/iscsi_tgt and a documented configuration file can be found at etc/spdk/sp
|
||||
|
||||
This release also significantly improves the existing NVMe over Fabrics target.
|
||||
|
||||
- The configuration file format was changed, which will require updates to
|
||||
- The configuration file format was changed, which will require updates to
|
||||
any existing nvmf.conf files (see `etc/spdk/nvmf.conf.in`):
|
||||
- `SubsystemGroup` was renamed to `Subsystem`.
|
||||
- `AuthFile` was removed (it was unimplemented).
|
||||
@ -3297,18 +3297,18 @@ This release also significantly improves the existing NVMe over Fabrics target.
|
||||
- Subsystems now have a Mode, which can be Direct or Virtual. This is an attempt
|
||||
to future-proof the interface, so the only mode supported by this release
|
||||
is "Direct".
|
||||
- Many bug fixes and cleanups were applied to the `nvmf_tgt` app and library.
|
||||
- The target now supports discovery.
|
||||
- Many bug fixes and cleanups were applied to the `nvmf_tgt` app and library.
|
||||
- The target now supports discovery.
|
||||
|
||||
This release also adds one new feature and provides some better examples and tools
|
||||
for the NVMe driver.
|
||||
|
||||
- The Weighted Round Robin arbitration method is now supported. This allows
|
||||
- The Weighted Round Robin arbitration method is now supported. This allows
|
||||
the user to specify different priorities on a per-I/O-queue basis. To
|
||||
enable WRR, set the `arb_mechanism` field during `spdk_nvme_probe()`.
|
||||
- A simplified "Hello World" example was added to show the proper way to use
|
||||
- A simplified "Hello World" example was added to show the proper way to use
|
||||
the NVMe library API; see `examples/nvme/hello_world/hello_world.c`.
|
||||
- A test for measuring software overhead was added. See `test/lib/nvme/overhead`.
|
||||
- A test for measuring software overhead was added. See `test/lib/nvme/overhead`.
|
||||
|
||||
## v16.06: NVMf userspace target
|
||||
|
||||
|
52
doc/iscsi.md
52
doc/iscsi.md
@ -45,11 +45,11 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
||||
|
||||
### Portal groups
|
||||
|
||||
- iscsi_create_portal_group -- Add a portal group.
|
||||
- iscsi_delete_portal_group -- Delete an existing portal group.
|
||||
- iscsi_target_node_add_pg_ig_maps -- Add initiator group to portal group mappings to an existing iSCSI target node.
|
||||
- iscsi_target_node_remove_pg_ig_maps -- Delete initiator group to portal group mappings from an existing iSCSI target node.
|
||||
- iscsi_get_portal_groups -- Show information about all available portal groups.
|
||||
- iscsi_create_portal_group -- Add a portal group.
|
||||
- iscsi_delete_portal_group -- Delete an existing portal group.
|
||||
- iscsi_target_node_add_pg_ig_maps -- Add initiator group to portal group mappings to an existing iSCSI target node.
|
||||
- iscsi_target_node_remove_pg_ig_maps -- Delete initiator group to portal group mappings from an existing iSCSI target node.
|
||||
- iscsi_get_portal_groups -- Show information about all available portal groups.
|
||||
|
||||
~~~
|
||||
/path/to/spdk/scripts/rpc.py iscsi_create_portal_group 1 10.0.0.1:3260
|
||||
@ -57,10 +57,10 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
||||
|
||||
### Initiator groups
|
||||
|
||||
- iscsi_create_initiator_group -- Add an initiator group.
|
||||
- iscsi_delete_initiator_group -- Delete an existing initiator group.
|
||||
- iscsi_initiator_group_add_initiators -- Add initiators to an existing initiator group.
|
||||
- iscsi_get_initiator_groups -- Show information about all available initiator groups.
|
||||
- iscsi_create_initiator_group -- Add an initiator group.
|
||||
- iscsi_delete_initiator_group -- Delete an existing initiator group.
|
||||
- iscsi_initiator_group_add_initiators -- Add initiators to an existing initiator group.
|
||||
- iscsi_get_initiator_groups -- Show information about all available initiator groups.
|
||||
|
||||
~~~
|
||||
/path/to/spdk/scripts/rpc.py iscsi_create_initiator_group 2 ANY 10.0.0.2/32
|
||||
@ -68,10 +68,10 @@ The iSCSI target is configured via JSON-RPC calls. See @ref jsonrpc for details.
|
||||
|
||||
### Target nodes
|
||||
|
||||
- iscsi_create_target_node -- Add an iSCSI target node.
|
||||
- iscsi_delete_target_node -- Delete an iSCSI target node.
|
||||
- iscsi_target_node_add_lun -- Add a LUN to an existing iSCSI target node.
|
||||
- iscsi_get_target_nodes -- Show information about all available iSCSI target nodes.
|
||||
- iscsi_create_target_node -- Add an iSCSI target node.
|
||||
- iscsi_delete_target_node -- Delete an iSCSI target node.
|
||||
- iscsi_target_node_add_lun -- Add a LUN to an existing iSCSI target node.
|
||||
- iscsi_get_target_nodes -- Show information about all available iSCSI target nodes.
|
||||
|
||||
~~~
|
||||
/path/to/spdk/scripts/rpc.py iscsi_create_target_node Target3 Target3_alias MyBdev:0 1:2 64 -d
|
||||
@ -274,20 +274,22 @@ sde
|
||||
At the iSCSI level, we provide the following support for Hotplug:
|
||||
|
||||
1. bdev/nvme:
|
||||
At the bdev/nvme level, we start one hotplug monitor which will call
|
||||
spdk_nvme_probe() periodically to get the hotplug events. We provide the
|
||||
private attach_cb and remove_cb for spdk_nvme_probe(). For the attach_cb,
|
||||
we will create the block device base on the NVMe device attached, and for the
|
||||
remove_cb, we will unregister the block device, which will also notify the
|
||||
upper level stack (for iSCSI target, the upper level stack is scsi/lun) to
|
||||
handle the hot-remove event.
|
||||
|
||||
At the bdev/nvme level, we start one hotplug monitor which will call
|
||||
spdk_nvme_probe() periodically to get the hotplug events. We provide the
|
||||
private attach_cb and remove_cb for spdk_nvme_probe(). For the attach_cb,
|
||||
we will create the block device base on the NVMe device attached, and for the
|
||||
remove_cb, we will unregister the block device, which will also notify the
|
||||
upper level stack (for iSCSI target, the upper level stack is scsi/lun) to
|
||||
handle the hot-remove event.
|
||||
|
||||
2. scsi/lun:
|
||||
When the LUN receive the hot-remove notification from block device layer,
|
||||
the LUN will be marked as removed, and all the IOs after this point will
|
||||
return with check condition status. Then the LUN starts one poller which will
|
||||
wait for all the commands which have already been submitted to block device to
|
||||
return back; after all the commands return back, the LUN will be deleted.
|
||||
|
||||
When the LUN receive the hot-remove notification from block device layer,
|
||||
the LUN will be marked as removed, and all the IOs after this point will
|
||||
return with check condition status. Then the LUN starts one poller which will
|
||||
wait for all the commands which have already been submitted to block device to
|
||||
return back; after all the commands return back, the LUN will be deleted.
|
||||
|
||||
@sa spdk_nvme_probe
|
||||
|
||||
|
20
doc/nvme.md
20
doc/nvme.md
@ -2,14 +2,14 @@
|
||||
|
||||
# In this document {#nvme_toc}
|
||||
|
||||
* @ref nvme_intro
|
||||
* @ref nvme_examples
|
||||
* @ref nvme_interface
|
||||
* @ref nvme_design
|
||||
* @ref nvme_fabrics_host
|
||||
* @ref nvme_multi_process
|
||||
* @ref nvme_hotplug
|
||||
* @ref nvme_cuse
|
||||
- @ref nvme_intro
|
||||
- @ref nvme_examples
|
||||
- @ref nvme_interface
|
||||
- @ref nvme_design
|
||||
- @ref nvme_fabrics_host
|
||||
- @ref nvme_multi_process
|
||||
- @ref nvme_hotplug
|
||||
- @ref nvme_cuse
|
||||
|
||||
# Introduction {#nvme_intro}
|
||||
|
||||
@ -124,8 +124,8 @@ io flag set, and the next one should have the SPDK_NVME_IO_FLAGS_FUSE_SECOND.
|
||||
|
||||
In addition, the following rules must be met to execute two commands as an atomic unit:
|
||||
|
||||
- The commands shall be inserted next to each other in the same submission queue.
|
||||
- The LBA range, should be the same for the two commands.
|
||||
- The commands shall be inserted next to each other in the same submission queue.
|
||||
- The LBA range, should be the same for the two commands.
|
||||
|
||||
E.g. To send fused compare and write operation user must call spdk_nvme_ns_cmd_compare
|
||||
followed with spdk_nvme_ns_cmd_write and make sure no other operations are submitted
|
||||
|
@ -77,13 +77,13 @@ directory and include the headers by prefixing `spdk/` like this:
|
||||
Most of the headers here correspond with a library in the `lib` directory. There
|
||||
are a few headers that stand alone, however. They are:
|
||||
|
||||
- `assert.h`
|
||||
- `barrier.h`
|
||||
- `endian.h`
|
||||
- `fd.h`
|
||||
- `mmio.h`
|
||||
- `queue.h` and `queue_extras.h`
|
||||
- `string.h`
|
||||
- `assert.h`
|
||||
- `barrier.h`
|
||||
- `endian.h`
|
||||
- `fd.h`
|
||||
- `mmio.h`
|
||||
- `queue.h` and `queue_extras.h`
|
||||
- `string.h`
|
||||
|
||||
There is also an `spdk_internal` directory that contains header files widely included
|
||||
by libraries within SPDK, but that are not part of the public API and would not be
|
||||
|
@ -90,13 +90,13 @@ physically-discontiguous regions and Vhost-user specification puts a limit on
|
||||
their number - currently 8. The driver sends a single message for each region with
|
||||
the following data:
|
||||
|
||||
* file descriptor - for mmap
|
||||
* user address - for memory translations in Vhost-user messages (e.g.
|
||||
- file descriptor - for mmap
|
||||
- user address - for memory translations in Vhost-user messages (e.g.
|
||||
translating vring addresses)
|
||||
* guest address - for buffers addresses translations in vrings (for QEMU this
|
||||
- guest address - for buffers addresses translations in vrings (for QEMU this
|
||||
is a physical address inside the guest)
|
||||
* user offset - positive offset for the mmap
|
||||
* size
|
||||
- user offset - positive offset for the mmap
|
||||
- size
|
||||
|
||||
The Master will send new memory regions after each memory change - usually
|
||||
hotplug/hotremove. The previous mappings will be removed.
|
||||
@ -108,11 +108,11 @@ as they use common SCSI I/O to inquiry the underlying disk(s).
|
||||
Afterwards, the driver requests the number of maximum supported queues and
|
||||
starts sending virtqueue data, which consists of:
|
||||
|
||||
* unique virtqueue id
|
||||
* index of the last processed vring descriptor
|
||||
* vring addresses (from user address space)
|
||||
* call descriptor (for interrupting the driver after I/O completions)
|
||||
* kick descriptor (to listen for I/O requests - unused by SPDK)
|
||||
- unique virtqueue id
|
||||
- index of the last processed vring descriptor
|
||||
- vring addresses (from user address space)
|
||||
- call descriptor (for interrupting the driver after I/O completions)
|
||||
- kick descriptor (to listen for I/O requests - unused by SPDK)
|
||||
|
||||
If multiqueue feature has been negotiated, the driver has to send a specific
|
||||
*ENABLE* message for each extra queue it wants to be polled. Other queues are
|
||||
|
@ -1,7 +1,6 @@
|
||||
all
|
||||
exclude_rule 'MD003'
|
||||
exclude_rule 'MD004'
|
||||
exclude_rule 'MD005'
|
||||
exclude_rule 'MD006'
|
||||
exclude_rule 'MD007'
|
||||
exclude_rule 'MD009'
|
||||
|
Loading…
Reference in New Issue
Block a user