History log of /spdk/lib/nvme/ (Results 1 – 25 of 1976)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
d58eef2a11-Dec-2024 Alex Michon <amichon@kalrayinc.com>

nvme/rdma: Fix reinserting qpair in connecting list after stale state

When a qpair is first created, we add it to a list of connecting qpairs.
If the connection fails, we move the qpair to a stale s

nvme/rdma: Fix reinserting qpair in connecting list after stale state

When a qpair is first created, we add it to a list of connecting qpairs.
If the connection fails, we move the qpair to a stale state and we retry
later. At this point, we should not add the qpair again to the
connecting qpairs list.

Change-Id: If38a8a51d3cb86f4d52d926d1acc349af21a6947
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25526
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot

show more ...

6263899123-Aug-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Don't limit max_sge if UMR is used

Since UMR creates a vurtually contig memory buffer,
we can always support up to 16 SGEs regardless of
MSDBD reported by target

Signed-off-by: Alexey Ma

nvme/rdma: Don't limit max_sge if UMR is used

Since UMR creates a vurtually contig memory buffer,
we can always support up to 16 SGEs regardless of
MSDBD reported by target

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: Ibd339f71ad35d355783993f777fcf8009ea68466
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24710
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <ben@nvidia.com>
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot

show more ...

cec5ba2823-Aug-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Register UMR per IO request

If accel sequence is supported, append a copy
task even if there is no accel sequence. NVME RDMA
driver expects that accel framework registers UMR
for the data

nvme/rdma: Register UMR per IO request

If accel sequence is supported, append a copy
task even if there is no accel sequence. NVME RDMA
driver expects that accel framework registers UMR
for the data buffer. This UMR allows to represent
fragmented payload as a virtually contig one.

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I410f991959b08eab033105a7dbb4a9aaba491567
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24709
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>

show more ...

1ae735a505-Nov-2024 Konrad Sztyber <konrad.sztyber@intel.com>

nvme: add poll_group interrupt callback

In interrupt mode, IO completions are processed when waiting on
poll_group's fd_group. But there are some events (qpair disconnection)
that require extra han

nvme: add poll_group interrupt callback

In interrupt mode, IO completions are processed when waiting on
poll_group's fd_group. But there are some events (qpair disconnection)
that require extra handling. Normally, this happens in
spdk_nvme_poll_group_wait(), but when manually doing a
spdk_fd_group_wait() on poll_group's fd_group, we need a notification to
get this done.

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I08979e42ff57b53f0c97670e9996b0ce6dad713e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25468
Reviewed-by: Ankit Kumar <ankit.kumar@samsung.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <ben@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@nvidia.com>

show more ...

f804716301-Nov-2024 Konrad Sztyber <konrad.sztyber@intel.com>

nvme: add spdk_nvme_poll_group_get_fd_group()

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I0eb30622baf8d1d0ba0af632482570aaaeef52af
Reviewed-on: https://review.spdk.io/gerrit

nvme: add spdk_nvme_poll_group_get_fd_group()

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I0eb30622baf8d1d0ba0af632482570aaaeef52af
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25467
Reviewed-by: Ankit Kumar <ankit.kumar@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...

0354bb8e05-Dec-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Force qp disconnect on pg remove

If a qpair is removed from a poll group and it still
has a poller, we must force qpair disconnect because
otherwise group reference is removed an we wont'

nvme/rdma: Force qp disconnect on pg remove

If a qpair is removed from a poll group and it still
has a poller, we must force qpair disconnect because
otherwise group reference is removed an we wont' be
able to release the poller

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I42699e4a692e6b878a828812328737a729e0295e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25513
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot

show more ...

a333974e13-Nov-2024 Alex Michon <amichon@kalrayinc.com>

nvme/rdma: Flush queued send WRs when disconnecting a qpair

This will prevent staying in lingering state until the disconnection
timeout for no good reason.

Change-Id: Ife01eb2a7dd28e000fee15fba10d

nvme/rdma: Flush queued send WRs when disconnecting a qpair

This will prevent staying in lingering state until the disconnection
timeout for no good reason.

Change-Id: Ife01eb2a7dd28e000fee15fba10dfd8aa7802725
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25429
Community-CI: Mellanox Build Bot
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...

2b86721707-Nov-2024 Alex Michon <amichon@kalrayinc.com>

nvme/rdma: Prevent submitting new recv WR when disconnecting

If we are in a disconnection process, we may never get WC for these
recv WR and we will have to wait the entire disconnection timeout
bef

nvme/rdma: Prevent submitting new recv WR when disconnecting

If we are in a disconnection process, we may never get WC for these
recv WR and we will have to wait the entire disconnection timeout
before deciding to destroy the qpair.

Change-Id: Ifdd5ed7866dec4c3e8b37b45aea2c95293c0d994
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25415
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...

2c140f5818-Jul-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Support accel sequence

If a request has an accel sequence, we append a copy task
with RDMA memory domain and don't send capsule until
the data_transfer callback is called. In the callback

nvme/rdma: Support accel sequence

If a request has an accel sequence, we append a copy task
with RDMA memory domain and don't send capsule until
the data_transfer callback is called. In the callback
we expect to get a single iov and a memory key which
are sent in NVMF capsule to remote taget. When network
transmission is finished, we finish data tranfer operation.
The reuqest is completed in accel sequence finish_cb.
A request which is executing accel sequence has a special
flag, we don't abort such requests.
Also, we store the data transfer completion callback and
call it in case of network failure.
Added tests for this feature

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I021bd5f268185a5e1b2d77eb098f8daf491aacf9
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24702
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...


/spdk/CHANGELOG.md
/spdk/app/fio/bdev/fio_plugin.c
/spdk/app/fio/nvme/fio_plugin.c
/spdk/app/spdk_dd/spdk_dd.c
/spdk/doc/Doxyfile
/spdk/doc/jsonrpc.md
/spdk/doc/nvmf.md
/spdk/doc/tracing.md
/spdk/examples/bdev/bdevperf/bdevperf.c
/spdk/examples/blob/cli/blobcli.c
/spdk/examples/nvme/cmb_copy/cmb_copy.c
/spdk/include/spdk/accel.h
/spdk/include/spdk/bdev.h
/spdk/include/spdk/bdev_module.h
/spdk/include/spdk/dif.h
/spdk/include/spdk/nvme_spec.h
/spdk/include/spdk/nvmf.h
/spdk/include/spdk/nvmf_transport.h
/spdk/include/spdk_internal/nvme_tcp.h
/spdk/lib/accel/accel.c
/spdk/lib/bdev/bdev.c
/spdk/lib/bdev/part.c
/spdk/lib/bdev/spdk_bdev.map
/spdk/lib/blob/blobstore.c
/spdk/lib/env_dpdk/init.c
/spdk/lib/event/scheduler_static.c
/spdk/lib/ftl/base/ftl_base_bdev.c
/spdk/lib/lvol/lvol.c
nvme_rdma.c
/spdk/lib/nvmf/ctrlr.c
/spdk/lib/nvmf/ctrlr_bdev.c
/spdk/lib/nvmf/nvmf.c
/spdk/lib/nvmf/nvmf_internal.h
/spdk/lib/nvmf/nvmf_rpc.c
/spdk/lib/nvmf/subsystem.c
/spdk/lib/nvmf/tcp.c
/spdk/lib/nvmf/transport.c
/spdk/lib/nvmf/transport.h
/spdk/lib/nvmf/vfio_user.c
/spdk/lib/reduce/reduce.c
/spdk/lib/util/dif.c
/spdk/lib/util/spdk_util.map
/spdk/module/accel/mlx5/accel_mlx5.c
/spdk/module/bdev/malloc/bdev_malloc.c
/spdk/module/bdev/nvme/bdev_nvme.c
/spdk/module/bdev/passthru/vbdev_passthru.c
/spdk/module/event/subsystems/nvmf/nvmf_rpc.c
/spdk/python/spdk/rpc/nvmf.py
/spdk/python/spdk/rpc/ublk.py
/spdk/scripts/check_format.sh
/spdk/scripts/rpc.py
/spdk/test/accel/mlx5/accel_mlx5_driver_crypto.sh
/spdk/test/bdev/blockdev.sh
/spdk/test/common/autotest_common.sh
/spdk/test/common/lib/bdev/common_stubs.h
/spdk/test/dma/test_dma/test_dma.c
/spdk/test/unit/lib/bdev/bdev.c/bdev_ut.c
/spdk/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c
/spdk/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c
/spdk/test/unit/lib/bdev/part.c/part_ut.c
/spdk/test/unit/lib/blob/blob.c/blob_ut.c
/spdk/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c
/spdk/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c
/spdk/test/unit/lib/nvmf/ctrlr_bdev.c/ctrlr_bdev_ut.c
/spdk/test/unit/lib/nvmf/nvmf.c/nvmf_ut.c
/spdk/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c
/spdk/test/unit/lib/nvmf/tcp.c/tcp_ut.c
/spdk/test/unit/lib/nvmf/transport.c/transport_ut.c
/spdk/test/unit/lib/nvmf/vfio_user.c/vfio_user_ut.c
6c35d97407-Nov-2024 Nathan Claudel <nclaudel@kalrayinc.com>

lib/nvme: destruct controllers that failed init asynchronously

The controller destroy sequence is as follows:
- Set `CC.SHN` to request shutdown
- Wait for `CSTS.SHST` to be set to `0b10` (Shutdown

lib/nvme: destruct controllers that failed init asynchronously

The controller destroy sequence is as follows:
- Set `CC.SHN` to request shutdown
- Wait for `CSTS.SHST` to be set to `0b10` (Shutdown complete)
- Destroy the associated structs when it's done or after a timeout
To do it, two things should be done:
- First, call `nvme_ctrlr_destruct_async`
- Then, poll `nvme_ctrlr_destruct_poll_async`

However, when a controller fails to initialize on probe, this polling is
done synchronously using `nvme_ctrlr_destruct`, which introduces 1ms
sleep between each poll.

This is really bad if a controller does not behave as expected and does
not set its `CSTS.SHST` in a timely manner because it burdens the
probe thread with tons of sleep. If hot-plug is enabled, it makes things
even worse because this operation is retried again and again.

Fix this by doing an asynchronous destruct when the controller fails to
initialize. Add contexts for this operation on the probe context and
poll for controllers destruction in the probe poller function.

Signed-off-by: Nathan Claudel <nclaudel@kalrayinc.com>
Change-Id: Ic072a2b7c3351a229d3b6e5c667b71dca2a84b93
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25414
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Vasuki Manikarnike <vasuki.manikarnike@hpe.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: Jim Harris <jim.harris@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-by: Changpeng Liu <changpeliu@tencent.com>
Community-CI: Mellanox Build Bot

show more ...

d8f6e79820-Nov-2024 Alex Michon <amichon@kalrayinc.com>

nvme: Fix discovery loop when target has no entry

When a target returns no discovery entry, we may enter in a loop of
discovery because we don't correctly set start_genctr. So the exit
condition of

nvme: Fix discovery loop when target has no entry

When a target returns no discovery entry, we may enter in a loop of
discovery because we don't correctly set start_genctr. So the exit
condition of the loop `ctx->start_genctr == ctx->end_genctr` is never
achieved.

Change-Id: I1fed834f6a2da1099bddcf7599408f01831288a1
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25457
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Changpeng Liu <changpeliu@tencent.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


/spdk/CHANGELOG.md
/spdk/app/spdk_nvme_perf/perf.c
/spdk/autotest.sh
/spdk/doc/jsonrpc.md
/spdk/dpdkbuild/Makefile
/spdk/examples/blob/cli/blobcli.c
/spdk/examples/nvmf/nvmf/nvmf.c
/spdk/examples/thread/thread/thread_ex.c
/spdk/include/spdk/bdev_module.h
/spdk/include/spdk/blob.h
/spdk/include/spdk/dif.h
/spdk/include/spdk/lvol.h
/spdk/include/spdk/module/bdev/nvme.h
/spdk/include/spdk_internal/mlx5.h
/spdk/include/spdk_internal/rdma_provider.h
/spdk/lib/bdev/bdev.c
/spdk/lib/blob/Makefile
/spdk/lib/blob/blob_bs_dev.c
/spdk/lib/blob/blobstore.c
/spdk/lib/blob/blobstore.h
/spdk/lib/blob/spdk_blob.map
/spdk/lib/blobfs/Makefile
/spdk/lib/env_dpdk/env.mk
/spdk/lib/lvol/Makefile
/spdk/lib/lvol/lvol.c
/spdk/lib/mlx5/mlx5_umr.c
/spdk/lib/mlx5/spdk_mlx5.map
nvme_discovery.c
/spdk/lib/nvmf/ctrlr.c
/spdk/lib/nvmf/fc.c
/spdk/lib/nvmf/fc_ls.c
/spdk/lib/nvmf/nvmf_fc.h
/spdk/lib/nvmf/vfio_user.c
/spdk/lib/rdma_provider/rdma_provider_mlx5_dv.c
/spdk/lib/rdma_provider/rdma_provider_verbs.c
/spdk/lib/rdma_provider/spdk_rdma_provider.map
/spdk/lib/reduce/reduce.c
/spdk/lib/util/dif.c
/spdk/lib/vhost/vhost.c
/spdk/lib/vhost/vhost_blk.c
/spdk/lib/vhost/vhost_internal.h
/spdk/mk/spdk.lib_deps.mk
/spdk/module/accel/dpdk_compressdev/accel_dpdk_compressdev.c
/spdk/module/accel/error/accel_error.c
/spdk/module/accel/mlx5/accel_mlx5.c
/spdk/module/accel/mlx5/accel_mlx5.h
/spdk/module/accel/mlx5/accel_mlx5_rpc.c
/spdk/module/bdev/lvol/vbdev_lvol.c
/spdk/module/bdev/lvol/vbdev_lvol.h
/spdk/module/bdev/lvol/vbdev_lvol_rpc.c
/spdk/module/bdev/nvme/bdev_nvme.c
/spdk/module/bdev/nvme/bdev_nvme.h
/spdk/module/bdev/nvme/bdev_nvme_rpc.c
/spdk/module/bdev/nvme/spdk_bdev_nvme.map
/spdk/module/bdev/ocf/ctx.c
/spdk/module/bdev/ocf/ctx.h
/spdk/module/bdev/ocf/vbdev_ocf.c
/spdk/module/bdev/ocf/volume.c
/spdk/module/bdev/ocf/volume.h
/spdk/module/bdev/xnvme/bdev_xnvme.c
/spdk/module/blob/bdev/Makefile
/spdk/module/blob/bdev/blob_bdev.c
/spdk/module/scheduler/dpdk_governor/dpdk_governor.c
/spdk/ocf
/spdk/python/spdk/rpc/bdev.py
/spdk/python/spdk/rpc/lvol.py
/spdk/python/spdk/rpc/mlx5.py
/spdk/scripts/bash-completion/spdk
/spdk/scripts/rpc.py
/spdk/test/accel/mlx5/accel_mlx5_copy.sh
/spdk/test/accel/mlx5/accel_mlx5_crc32c.sh
/spdk/test/accel/mlx5/accel_mlx5_crypto.sh
/spdk/test/bdev/blockdev.sh
/spdk/test/blobstore/btest.out.match
/spdk/test/common/autobuild_common.sh
/spdk/test/common/autotest_common.sh
/spdk/test/common/nvme/functions.sh
/spdk/test/nvme/interrupt.sh
/spdk/test/nvme/xnvme/common.sh
/spdk/test/nvme/xnvme/xnvme.sh
/spdk/test/nvmf/target/nsid.sh
/spdk/test/scheduler/common.sh
/spdk/test/unit/lib/bdev/bdev.c/bdev_ut.c
/spdk/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c
/spdk/test/unit/lib/blob/blob.c/blob_ut.c
/spdk/test/unit/lib/blob/blob_bdev.c/blob_bdev_ut.c
/spdk/test/unit/lib/blob/bs_dev_common.c
/spdk/test/unit/lib/lvol/lvol.c/lvol_ut.c
/spdk/test/unit/lib/nvme/nvme_rdma.c/nvme_rdma_ut.c
/spdk/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c
/spdk/test/unit/lib/nvmf/fc.c/fc_ut.c
/spdk/test/unit/lib/util/dif.c/dif_ut.c
cc533a3e27-Sep-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/nvme: Factor out submit_request function

Move part of code to another function which
will later be called from several places

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I2

nvme/nvme: Factor out submit_request function

Move part of code to another function which
will later be called from several places

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I22b650034b505c9e65b7ec5ea1621a70dc15c576
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25064
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>

show more ...

af0187bf17-Jul-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Remove qpair::max_recv_sge as unused

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I92cb54e92e93ffccc9bfaa42deab30a5433d336f
Reviewed-on: https://review.spdk.io/gerrit/c

nvme/rdma: Remove qpair::max_recv_sge as unused

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I92cb54e92e93ffccc9bfaa42deab30a5433d336f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24696
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...

f0e4b91f16-Jul-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Add likely/unlikely to IO path

Even though compilers can inline function
implicitly, let's add inline keyword to some functions
which are part of IO path.

Signed-off-by: Alexey Marchuk <

nvme/rdma: Add likely/unlikely to IO path

Even though compilers can inline function
implicitly, let's add inline keyword to some functions
which are part of IO path.

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I54aa24607028dabd70084193b1947049c379f0d9
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24695
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...

51bde66216-Jul-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Factor our contig request preparation

Move the NVMF configuration to dedicated functions, they
are to be used in next patches.
Move rdma_req and cid initialization out of nvme_rdma_req_in

nvme/rdma: Factor our contig request preparation

Move the NVMF configuration to dedicated functions, they
are to be used in next patches.
Move rdma_req and cid initialization out of nvme_rdma_req_init,
that is needed in next patches to support accel sequence

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I9aca26d96c92d44b1b3f6542c3cf00fe9af9cc4b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24694
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...

1794c39505-Jul-2024 Alexey Marchuk <alexeymar@nvidia.com>

nvme/rdma: Allocate memory domain in rdma provider

Next patches add data_transfer function to a memory domain,
for mlx5_dv provider, that means we can't use a memory
domain created via rdma_utils. I

nvme/rdma: Allocate memory domain in rdma provider

Next patches add data_transfer function to a memory domain,
for mlx5_dv provider, that means we can't use a memory
domain created via rdma_utils. In future, memory domain
will hold a qpair pointer, to minize changes we create
a memory domain per qpair in this patch
The verbs provider still uses rdma_utils library.

Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com>
Change-Id: I53c20b70901c1061c8a067c612dc4ce6b9a3999a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24692
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <ben@nvidia.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>

show more ...

f7ed8cd628-Oct-2024 Ankit Kumar <ankit.kumar@samsung.com>

lib/nvme: eventfd to handle disconnected I/O qpair

In poll mode the process completion API checks for the disconnected
queue pair and calls the specified disconnected_qpair_cb function. In
interrupt

lib/nvme: eventfd to handle disconnected I/O qpair

In poll mode the process completion API checks for the disconnected
queue pair and calls the specified disconnected_qpair_cb function. In
interrupt mode we need a way to notify the application in case of
disconnected queue pair.
Register an eventfd to the epoll file descriptor of nvme poll group. This
fd will be written after a queue pair disconnection. Thus the next event
on poll group will handle the queue pair disconnection.

Change-Id: I481eeb847c22e710d8e9705c4ea3e9267da93876
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25387
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>

show more ...

6de6864423-Sep-2024 Ankit Kumar <ankit.kumar@samsung.com>

nvme/poll_group: create and manage fd_group for nvme poll group

Create spdk_fd_group within spdk_nvme_poll_group, which manages interrupt
events for all the file descriptors of spdk_nvme_qpair that

nvme/poll_group: create and manage fd_group for nvme poll group

Create spdk_fd_group within spdk_nvme_poll_group, which manages interrupt
events for all the file descriptors of spdk_nvme_qpair that are part of
this poll group.

Two new APIs have been introduced to manage this fd_group

1). spdk_nvme_poll_group_get_fd()
Fetches the internal epoll file descriptor of the poll group.

2). spdk_nvme_poll_group_wait()
Collectively waits for interrupt events on all the I/O queue pair file
descriptors managed by the poll group.
When an interrupt event gets generated, it processes any outstanding
completions on the I/O queue pair with interrupts. These interrupt events
are registered at the the time of I/O queue pair creation.

The nvme_poll_group_connect_qpair() has been modified. Based on the poll
group interrupt support, this now registers an event source for the file
descriptor of queue pair to the internal epoll file descriptor of the
poll group.
Similarly, the nvme_poll_group_disconnect_qpair() unregisters the event
source for file descriptor of the queue pair from the internal epoll file
descriptor of the poll group.

Additional checks are in place to prevent mixing of interrupts enabled
and interrupts disabled I/O queue pairs. The poll group interrupt support
capability is set by the first I/O queue pair added to it.

Change-Id: If40f1ea82051ae598590f5a23ab9ed58bcb4af09
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25080
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>

show more ...

1efa1b1625-Oct-2024 Ankit Kumar <ankit.kumar@samsung.com>

nvme: interface to check disconnected queue pairs

The following commit will enable handling of interrupt events on nvme
poll group. For interrupt mode currently there is no way to check for
disconne

nvme: interface to check disconnected queue pairs

The following commit will enable handling of interrupt events on nvme
poll group. For interrupt mode currently there is no way to check for
disconnected queue pairs at the transport level, whereas in poll mode
its done with every process completion call,

Change-Id: Ic87872d55f99e40a67c6e2e8861722b2cb256295
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25370
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...

f43b765016-Oct-2024 Ankit Kumar <ankit.kumar@samsung.com>

lib/nvme: add opts_size to spdk_nvme_io_qpair_opts

Add opts_size to spdk_nvme_io_qpair_opts to align it with other opts
structures. Cleanup spdk_nvme_ctrlr_get_default_io_qpair_opts() a bit.

Use nv

lib/nvme: add opts_size to spdk_nvme_io_qpair_opts

Add opts_size to spdk_nvme_io_qpair_opts to align it with other opts
structures. Cleanup spdk_nvme_ctrlr_get_default_io_qpair_opts() a bit.

Use nvme_ctrlr_io_qpair_opts_copy() instead of memcpy.

Change-Id: I6d2f7d16a2f4f6cfb68e3fe5ac0515050e8c36ee
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25246
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...

28b353a512-Aug-2024 Ankit Kumar <ankit.kumar@samsung.com>

nvme: interface to retrieve fd for a queue

Applications that enable interrupts for completion notification will
register and unregister queue pair file descriptor with event source.
These applicatio

nvme: interface to retrieve fd for a queue

Applications that enable interrupts for completion notification will
register and unregister queue pair file descriptor with event source.
These application also require other necessary details such as event
source and file descriptor type during interrupt registration phase.

Added APIs spdk_nvme_qpair_get_fd() and spdk_nvme_ctrlr_get_admin_qp_fd()
to retrieve the file descriptor of an I/O and the admin queue pair of a
given controller respectively. These APIs accept spdk_event_handler_opts
which if specified, allows the transport layer to fill out event source
and fd type.

Change-Id: I5c24ae15ffc01afea879d0219e8721728cce592e
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24906
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...

3ab7a1f612-Sep-2024 Ankit Kumar <ankit.kumar@samsung.com>

nvme: enable interrupts for pcie nvme devices

Add an option enable_interrupts to the spdk_nvme_ctrlr_opts structure.
If this is set to true for pcie controllers interrupts may be enabled
during init

nvme: enable interrupts for pcie nvme devices

Add an option enable_interrupts to the spdk_nvme_ctrlr_opts structure.
If this is set to true for pcie controllers interrupts may be enabled
during initialization. Applications are required to check the resulting
value after the attach step to check for success.
Maximum of 256 eventfds can be reserved for I/O queues, but the actual
number can be lower and is based on the minimum requested I/O queues
and number of available I/O queues.
The nvme_pcie_ctrlr_cmd_create_io_cq() interface has been modified to
create I/O completion queues with interrupts. The interrupt vector field
corresponds to the queue identifier in this case.

This is only supported within a primary SPDK process, and if enabled
SPDK will not support any secondary processes.

Change-Id: Iff4e2348a0b77199cabb30c0bf93e0eed920cc93
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24905
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>

show more ...

f7f0fdf503-Sep-2024 Ankit Kumar <ankit.kumar@samsung.com>

nvme: Add transport interface to enable interrupts

The following commit will enable interrupts for pcie transport.
So add a new interface for the same.

Change-Id: I5cd87b0bb4ec95d6a9b862b659405cf56

nvme: Add transport interface to enable interrupts

The following commit will enable interrupts for pcie transport.
So add a new interface for the same.

Change-Id: I5cd87b0bb4ec95d6a9b862b659405cf56d8f864a
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24904
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot

show more ...


/spdk/CHANGELOG.md
/spdk/CONFIG
/spdk/app/fio/bdev/README.md
/spdk/autorun.sh
/spdk/configure
/spdk/doc/jsonrpc.md
/spdk/examples/fsdev/hello_world/hello_fsdev.c
/spdk/include/spdk/env.h
/spdk/include/spdk/fd_group.h
/spdk/include/spdk/fsdev.h
/spdk/include/spdk/fsdev_module.h
/spdk/include/spdk/nvme.h
/spdk/include/spdk/thread.h
/spdk/lib/bdev/bdev.c
/spdk/lib/blobfs/tree.c
/spdk/lib/env_dpdk/Makefile
/spdk/lib/env_dpdk/memory.c
/spdk/lib/env_dpdk/pci.c
/spdk/lib/env_dpdk/pci_dpdk.c
/spdk/lib/env_dpdk/pci_dpdk.h
/spdk/lib/env_dpdk/pci_dpdk_2207.c
/spdk/lib/env_dpdk/pci_dpdk_2211.c
/spdk/lib/env_dpdk/spdk_env_dpdk.map
/spdk/lib/event/reactor.c
/spdk/lib/fsdev/Makefile
/spdk/lib/fsdev/fsdev.c
/spdk/lib/fsdev/fsdev_io.c
/spdk/lib/fsdev/spdk_fsdev.map
/spdk/lib/fuse_dispatcher/fuse_dispatcher.c
Makefile
nvme_internal.h
nvme_transport.c
/spdk/lib/nvmf/Makefile
/spdk/lib/nvmf/transport.c
/spdk/lib/thread/Makefile
/spdk/lib/thread/iobuf.c
/spdk/lib/util/fd_group.c
/spdk/module/bdev/compress/vbdev_compress.c
/spdk/module/bdev/nvme/Makefile
/spdk/module/bdev/nvme/bdev_nvme.c
/spdk/module/bdev/nvme/spdk_bdev_nvme.map
/spdk/module/bdev/raid/bdev_raid.c
/spdk/module/event/subsystems/iobuf/iobuf.c
/spdk/module/event/subsystems/iobuf/iobuf_rpc.c
/spdk/module/fsdev/aio/fsdev_aio.c
/spdk/python/spdk/rpc/iobuf.py
/spdk/scripts/rpc.py
/spdk/test/common/autotest_common.sh
/spdk/test/common/lib/test_env.c
/spdk/test/common/lib/test_iobuf.c
/spdk/test/env/memory/memory_ut.c
/spdk/test/nvmf/common.sh
/spdk/test/unit/lib/accel/accel.c/accel_ut.c
/spdk/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c
/spdk/test/unit/lib/fsdev/fsdev.c/fsdev_ut.c
/spdk/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c
/spdk/test/unit/lib/thread/iobuf.c/iobuf_ut.c
/spdk/test/unit/lib/util/Makefile
/spdk/test/unit/lib/util/fd_group.c/Makefile
/spdk/test/unit/lib/util/fd_group.c/fd_group_ut.c
/spdk/test/unit/unittest.sh
2076ab3122-Oct-2024 Shuhei Matsumoto <smatsumoto@nvidia.com>

nvme: Add spdk_nvme_ctrlr_get_id() for multipath identification

ctrlr->cntlid is easy to get. However, there was no public API to
return ctrlr->cntlid yet.

As the following comment in lib/nvme/nvme

nvme: Add spdk_nvme_ctrlr_get_id() for multipath identification

ctrlr->cntlid is easy to get. However, there was no public API to
return ctrlr->cntlid yet.

As the following comment in lib/nvme/nvme_ctrlr.c,

Fabrics controllers should already have CNTLID from the Connect command.

If CNTLID from Connect doesn't match CNTLID in the Identify Controller data,
trust the one from Connect.

ctrlr->cntlid is sufficiently reliable.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Iad7f1d8defcc427b7656e1b5f4f8104439bcfd51
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25297
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>

show more ...

76062d4722-Oct-2024 Shuhei Matsumoto <smatsumoto@nvidia.com>

nvme: Add multipath info (controller ID) to NVME_CTRLR_*LOG()

NVME_CTRLR_*LOG() is helpful but all controllers have the same SUBNQN
for fabric transports. We cannot distinguish which path caused an

nvme: Add multipath info (controller ID) to NVME_CTRLR_*LOG()

NVME_CTRLR_*LOG() is helpful but all controllers have the same SUBNQN
for fabric transports. We cannot distinguish which path caused an error.

IP address and port are nice identification information but too long.

For multipath, each controller should have unique ID. Hence, controller
ID is good practical information to add.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Id0739a4caccff93aba5fbdfa3b611c4bf7da3045
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25296
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>

show more ...

12345678910>>...80