-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nvmeof rdma qp shutdown #5
Closed
EugeneKochetov
wants to merge
331
commits into
Mellanox:master
from
EugeneKochetov:nvmeof_rdma_qp_shutdown
Closed
Nvmeof rdma qp shutdown #5
EugeneKochetov
wants to merge
331
commits into
Mellanox:master
from
EugeneKochetov:nvmeof_rdma_qp_shutdown
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Instead of adding the linker flags just before application compilation on linux, move that linking to earlier in the process. This will also be useful for the shared library build. This series is aimed at fixing github issue 434 Change-Id: I84bcc6bd922ddb6e48adb2dfe0b154700773cf27 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/425435 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Lance Hartmann <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]>
This linker flag is really more important when dealing with external SO files such as libuuid. It shoudl follow those linked options around instead of all of our internal dependencies. This series is aimed at fixing github issue 434 Change-Id: Iee65470632b5ab0adeb361005edc894e05c43ea4 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/425441 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]>
1. Use the Raid-0 bdev which based two malloc bdevs to instead of one malloc blockbdev. 2. Create the lvol store with Raid-0 bdev which based two malloc bdevs when the number of Malloc bdevs is equal to 1. Change-Id: I8b584ad09011386b405e4756c04273834b24f029 Signed-off-by: Chen Wang <[email protected]> Reviewed-on: https://review.gerrithub.io/423043 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]>
The function now takes a pointer as it's last argument, and copies the size of the memory region for which the translation is validinto that pointer. For now, that will always be 2MB. However that behavior can change in the future. This series of changes is aimed at enabling spdk_mem_map_translate to report back to the user the length of the valid mem_map up to the function that requested the translation. This will be useful when retrieving memory regions associated with I/O buffers in NVMe-oF. For large I/O it will be possible that the buffer is split over multiple MRs and the I/O will have to be split into multiple SGLs. Change-Id: I8686c166ec956507f5ae55cf602341281482cb89 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/424888 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
This struct will hold the unique operations for the mem_map. This series of changes is aimed at enabling spdk_mem_map_translate to report back to the user the length of the valid mem_map up to the function that requested the translation. This will be useful when retrieving memory regions associated with I/O buffers in NVMe-oF. For large I/O it will be possible that the buffer is split over multiple MRs and the I/O will have to be split into multiple SGLs. Change-Id: Ifdd82497f238d99345033f2615c718802a591438 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/425327 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
sshfs is used to mount the shared filesystem used for communication between the pool and agents. Change-Id: I7c2a216ac57e394915f99bccf39d62d2ee17e5fb Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/425513 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
…connection Currently all poll group operations are done on the core allocated to the connection but spdk_env_get_current_core() is called in every operation and they are not explicitly checked yet. This patch adds check and uses conn->lcore to operate poll group. Change-Id: Id3a882a51f4f2d7ed0074f9cd9a8ad5bd830234c Signed-off-by: Shuhei Matsumoto <[email protected]> Reviewed-on: https://review.gerrithub.io/424743 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ziye Yang <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]>
- Add independent functions to create transport with specific opts and add to target while maintaining backward compatibility with current apps and rpc configuration that still use the add listener method to create a transport. - Add new rpc function to create transport and add to target. + Update json reporting to include new rpc function. + Update python scripts to support new rpc function. + New nvmf test script (cr_trprt.sh) to test new rpc function. Change-Id: I12d0a42e34c9edff757755f18a78b722d5e1523e Signed-off-by: John Barnard <[email protected]> Reviewed-on: https://review.gerrithub.io/423590 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Initial support for softare AESNI_MB DPDK driver only. Have tested (both aesni and QAT seprately and concurrrently) on underlying NVMe devices with bdevio and a bdevperf script that runs IOs from 512B to 128K each with Q depths from 1 to 512 in powers of 2 for 30 seconds each run. QAT can be included in the code (but not makefile) and marked as experimental until we are ready to test in CI. It works well on 2 systems but is a big PITA to get the hardware setup and configured for use with DPDK (IMHO). Change-Id: If518c3df8e74e00efa18afdf194824c5e69778fc Signed-off-by: Paul Luse <[email protected]> Reviewed-on: https://review.gerrithub.io/403107 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
DPDK initializes log as well (in rte_eal_init()), so we should re-initialize log after DPDK did that. Change-Id: I36843a6d09d1e2d84e76284899348b84364e18b7 Signed-off-by: wuzhouhui <[email protected]> Reviewed-on: https://review.gerrithub.io/423630 Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]>
spdk_rpc_get_vhost_controllers() forgot to free memory of w when ctx allocation failed. Defering the invoke of spdk_jsonrpc_begin_result(), so we can handle the failure conveniently. Change-Id: I223f5b9a918b068922d5a68c8d688331ebf90e42 Signed-off-by: wuzhouhui <[email protected]> Reviewed-on: https://review.gerrithub.io/425358 Reviewed-by: Pawel Wodkowski <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
Initial patch left out example rpc commands to create/delete Change-Id: I2e705b041bf7f6524625f88625234327a38bfc45 Signed-off-by: paul luse <[email protected]> Reviewed-on: https://review.gerrithub.io/425872 Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]>
We were previously checking only if the version of libibverbs was suitable for SEND_WITH_INVALIDATE. However, the NIC itself also has to support it and that should be checked. Change-Id: Ia43eb761343ce4dbe0496f3c929cfb889eb5815d Signed-off-by: Ben Walker <[email protected]> Reviewed-on: https://review.gerrithub.io/425631 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Seth Howell <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
Previously there was only an assert if it failed to send a response capsule. Now, release the resources associated with the request (and leave the assert in). This is a slight improvement. A full fix will likely involve forcibly terminating the connection. Change-Id: I62377078d0cb310042966a0eaca4c80c5f91f9f7 Signed-off-by: Ben Walker <[email protected]> Reviewed-on: https://review.gerrithub.io/425633 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
A request could be completed twice, once for an error on an IBV_SEND operation and again on an outstanding IBV_RDMA_WRITE operation, if the RNIC goes offline while a complete + data transfer are occurring. This fixes GitHub issue spdk#414 Change-Id: I2338b4d4582c5ee2512cfbd1e89048a10d3ecf1c Signed-off-by: Ben Walker <[email protected]> Reviewed-on: https://review.gerrithub.io/425646 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
Signed-off-by: Jim Harris <[email protected]> Change-Id: Ic5a8f5d977a9483ed65d6060aa82310ce6ddf1dd Reviewed-on: https://review.gerrithub.io/425644 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: John Barnard <[email protected]>
Add a new script to enable converting old INI config files to the new JSON-RPC config file format. This prepares for deprecating the INI config file file format in the future. Change-Id: I0f2bfa9a585ce3537772b662d8e4028ab08a554d Signed-off-by: Pawel Kaminski <[email protected]> Reviewed-on: https://review.gerrithub.io/420457 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Karol Latecki <[email protected]>
Avoid using the deprecated construct_nvmf_subsystem when dumping configuration. Change-Id: I908d87bdd77a8b2a8e54baeb7b73e8b52c4912ee Signed-off-by: Ben Walker <[email protected]> Reviewed-on: https://review.gerrithub.io/425186 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
rpmbuild pointed out that this is wrong to have executable files without shebang. Taking the opportunity and fix this for other files too. Change-Id: Ib21f436672150edc0aff511bff2eb6839870cf79 Signed-off-by: Pawel Wodkowski <[email protected]> Reviewed-on: https://review.gerrithub.io/425382 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Previously the alignment was to 4k due to page size of blobstore being minmal size to write to blobs. Now that io_unit is used, alignment can be changed to that. Change-Id: Ib48182e299dad9d9587ae20b97afe683d53933cb Signed-off-by: Piotr Pelplinski <[email protected]> Signed-off-by: Tomasz Zawadzki <[email protected]> Reviewed-on: https://review.gerrithub.io/425788 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
Signed-off-by: Piotr Pelplinski <[email protected]> Signed-off-by: Tomasz Zawadzki <[email protected]> Change-Id: I824735548d4aaadefd09c943889f885c35d326c0 Reviewed-on: https://review.gerrithub.io/425545 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
Signed-off-by: Piotr Pelplinski <[email protected]> Change-Id: I77cf0b8d64c1bfa050d61440472ff65821673b39 Reviewed-on: https://review.gerrithub.io/423999 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Tomasz Zawadzki <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Change-Id: I1812f4aa46ff1f2e464f40346bd012fe1f504011 Signed-off-by: Sun Zhenyuan <[email protected]> Reviewed-on: https://review.gerrithub.io/425467 Reviewed-by: GangCao <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]>
The static method ioat_channel_destruct() never fails. This cleanup patch changes its return type to be void instead of int. Change-Id: I0db464b6a810eadc3f58550114c4532ca33d03b5 Signed-off-by: Rami Rosen <[email protected]> Reviewed-on: https://review.gerrithub.io/425936 Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
Add dependency $(ENV_LIBS) for test/env/* as part of new variable $(ADDITIONAL_LIBS) which is direct dependency of $(APP) in mk/spdk.unittest.mk This solves the problem of make not triggering LINKing for test/env/* after changes made to lib/env_dpdk/*.c Issue was that Makefiles in test/env/*/ classified tests as unittests by including mk/spdk.unittest.mk But unittests are not using env_dpdk which means that unittests don't relink on env_dpdk update Change-Id: I91b6690dc92d68bc69bbf11ac5336d3a7f56e4e4 Signed-off-by: Vitaliy Mysak <[email protected]> Reviewed-on: https://review.gerrithub.io/425665 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Dariusz Stojaczyk <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
It was writing TransportId (lower-case d) instead. While here, fix similar issue in etc/spdk/nvmf.conf.in. lib/conf uses strcasecmp(), meaning TransportID and TransportId are effectively the same, but it's better to reduce confusion and just use the same in all places. Signed-off-by: Jim Harris <[email protected]> Change-Id: I2996ba46a5c2a239650e841d5b57424ff00f47e6 Reviewed-on: https://review.gerrithub.io/426001 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: GangCao <[email protected]> Reviewed-by: Ben Walker <[email protected]>
We recently increased the top level map from 128TB (47 bits) to 256TB (48 bits) but missed fixing one comment that still referred to the old number of bits. Signed-off-by: Jim Harris <[email protected]> Change-Id: Ic993bd136cd09789ea2a65b480151805d231c3d5 Reviewed-on: https://review.gerrithub.io/426002 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Dariusz Stojaczyk <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Ben Walker <[email protected]>
We kept this disabled by default originally because it lacked multiple iov support needed for vhost and nvmf in-capsule data. Now that support has been added, there is no reason to not enable it automatically - it has no extra package dependencies, so requiring users to specify --with-raid to configure is just an extra unneeded step. Signed-off-by: Jim Harris <[email protected]> Change-Id: Ia9796370e12a6f93993e70083de36114a37851bd Reviewed-on: https://review.gerrithub.io/426003 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]>
Change-Id: I6b074825142a073ab5fbeed0b96092396113a81f Signed-off-by: Liang Yan <[email protected]> Reviewed-on: https://review.gerrithub.io/425879 Reviewed-by: GangCao <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
The address of an array element will never be null. Change-Id: Id460cee75dd037b144271f7b5504004d25092c1e Signed-off-by: Ben Walker <[email protected]> Reviewed-on: https://review.gerrithub.io/426135 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]>
can u rebase your commit on top of HEAD |
It is in fact on one of the latest master commits. You see these commits because Mellanox/spdk master is 309 commits behind the spdk/spdk master. We need to update Mellanox/master. |
Change-Id: I94a59e240744acceca138d56bd141e9aec2e6270 Signed-off-by: GangCao <[email protected]> Reviewed-on: https://review.gerrithub.io/429875 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Piotr Pelpliński <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
This is an NVMe-specific issue and I/OA or VirtIO devices don't need it. Additionally, the delay is now asynchronous, meaning that potentially multiple NVMe controllers can wait all at once. The drawback of this change is that we're needlessly waiting even when using uio_pci_generic. However, since the delay does not block anymore, its impact is significantly minimized. Change-Id: I5d16a7fd7cb66c785acb687f14690e95f6188b9e Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/429414 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
The time required to wait increases with the amount of submitted FLR resets. Now that DPDK takes less and less time to initialize, this starts to become an issue. We can even see on our CI within regular tests where a single application is start-stopped in a short period of time. This is also a problem if a device is detached via RPC and immediately attached afterwards. The time required to wait seems to cap at 2 seconds, so instruct our driver to wait exactly that. Change-Id: I18b6fbdea9b0dca5d7e1756e9ead7d97119f2fa2 Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/429415 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
We need additional mocks for structures that were added in the most recent DPDK release to make our unit tests build properly. Change-Id: If6e471528d4cb1dce24fb5d910e9e545fcdaa0f6 Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/429987 Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
This must have been overlooked in the original patch as we do depend on the symmetric crypto operations. DPDK 18.08 starts to require this flag for building crypto libs that we want to use - they are no longer built unconditionally. Change-Id: I356afcc4333820bf1503f7a3b0a44bd2edcf3449 Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/429988 Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
Also use the DPDK's default T=x86_64-native-* configuration target instead of T=spdk-*, as the T=spdk-* is no longer available in spdk-18.08 branch of our DPDK fork. Change-Id: If12e7ae1acabece129b63ba2f1bec6b0b65678ca Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/423053 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
Change-Id: I7c08591ef7f92c076fde53bfd6467f8d5d2a2429 Signed-off-by: Liu Xiaodong <[email protected]> Reviewed-on: https://review.gerrithub.io/430382 Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
An example to send nvme_cmd rpc request: scripts/rpc.py send_nvme_cmd -n Nvme0 -t admin -r c2h \ -c <base64_urlsafe encoded cmdbuf> -D 4096 nvme-rpc will be processed internally by bdev_nvme. Change-Id: I6e731b76be0f503d48154a8b34a1e81b4b454396 Signed-off-by: Liu Xiaodong <[email protected]> Reviewed-on: https://review.gerrithub.io/417962 Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
nvmf_create_transport can be run both before and after the subsystems have been initialized. Therefore, we don't need the --wait-for-rpc argument in most cases. This eliminates the need for calling start_subsystem_init. Change-Id: I35560fb968159b4796b1022b1de9cca4dfc5feeb Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/429983 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
This script should be called when testing the crypto module. It will configure any qat cards with class code 37c8 for use with the spdk crypto bdev module. Change-Id: I233069fbe9ba3c7a6463f52443234f9fe2c9a1f7 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/428549 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Pawel Wodkowski <[email protected]> Reviewed-by: Jim Harris <[email protected]>
The memory restrictions were causing issues with allocating crypto bdev qpairs when using qat. Change-Id: I1e8a9799006293cb54f8959cfd24e38c4dee6d0f Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/430104 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Forcing bdev_svc to use a single hugetlbfs file causes the crypto bdev to fail to properly allocate qpairs for qat devices. The qpairs come back from the dpdk function queue_dma_zone_reserve misaligned. Change-Id: Ib0c95856031ca89f6528ea6d39ef68e03e2f9009 Signed-off-by: Seth Howell <[email protected]> Reviewed-on: https://review.gerrithub.io/430372 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Ben Walker <[email protected]>
A recent patch changed bdevperf app name from 'bdevtest' to 'bdevperf'. Change-Id: I6f89cb20560b819f8c451b34ee5afbf5fca68939 Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/430343 Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]>
Add debug log in set feature, spdk_nvmf_ctrlr_set_features_volatile_write_cache to indicate the volatile write cache is disabled or enabled according to the conditon. Change-Id: Idc0a7fb461e2bbf1371d4a3faf5d839c7370bb65 Signed-off-by: yidong0635 <[email protected]> Reviewed-on: https://review.gerrithub.io/428953 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
We always need to ensure bvdev->bdev is not NULL before accessing it. GET_CONFIG handler was standing out in this matter, causing segfaults when connecting to a vhost block device that went through a bdev hotremove. If the bdev has been hotremoved we'll now report blocksize == 0 and blockcount == 0. From what I checked, QEMU will still expose a virtio-blk device to the VM, but linux (because that's what I checked) won't create a block device for it. Note: The behavior above can be tricky to investigate as neither QEMU nor VM doesn't log any messages about it. We should eventually reject any new connections to a vhost-blk socket with hotremoved bdev, but that's a task for later. Fixes spdk#460 Change-Id: I266257f4b35d07f35ba03adf46cb18425f3cf39a Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/417934 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Pawel Wodkowski <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
…e issue The next patch will change spdk_iscsi_conn_destruct() to fix the Github issue spdk#457. This patch is a preparation to that. Change-Id: Iaf1c8a3fe8514d6bbd9f61f19f87b0bb2c27e76e Signed-off-by: Shuhei Matsumoto <[email protected]> Reviewed-on: https://review.gerrithub.io/430402 Tested-by: SPDK CI Jenkins <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Piotr Pelpliński <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]>
By running random, 64KB, 70% write, and 30% read workload and periodical TCP disconnection from the initiator, segmentation fault have occurred. By investigation, when the last write task completed and dequeued the primary write task in spdk_iscsi_task_cpl(), the primary write task was already dequeued in spdk_clear_all_transfer_task(). This patch dequeues all primary write tasks after all outstanding tasks complete. After starting to exit the connection, the connection will not receive any command. Hence waiting for completion of all pending tasks first will avoid double dequeue safely. Change-Id: I8e2b6b756be3a6e096675acc81cdb93fb6a7e350 Signed-off-by: Shuhei Matsumoto <[email protected]> Reviewed-on: https://review.gerrithub.io/430397 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Change the nvme example path from examples/nvme/identify to examples/nvme/identify/identify in getting_started.md Change-Id: I96fc9390548f2cd04b91af47fba33704cdc9ee5d Signed-off-by: Enming.Zhang <[email protected]> Reviewed-on: https://review.gerrithub.io/430046 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]>
Not a big deal, but `make ldflags` could still return invalid/stale values. Add it to PHONY so it's always rebuilt. Change-Id: Ieac675272b56fa452a7b1aad775c060feb80ead2 Signed-off-by: Darek Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/430307 Reviewed-by: Pawel Wodkowski <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
We need to resend SET_MEM_TABLE whenever memory is hotplugged or hotremoved. Change-Id: I9bdc975f11b07866122bc49b9cf372071c5370f2 Signed-off-by: Dariusz Stojaczyk <[email protected]> Reviewed-on: https://review.gerrithub.io/422582 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Reviewed-by: Changpeng Liu <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Pawel Wodkowski <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
Signed-off-by: Piotr Pelplinski <[email protected]> Change-Id: I358c7bd567166ffaf26b526bd69d030485611fe5 Reviewed-on: https://review.gerrithub.io/429855 Chandler-Test-Pool: SPDK Automated Test System <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]> Reviewed-by: Jim Harris <[email protected]>
This patch implements the following QP shutdown flow: 1. Move the QP to ERR state 2. Post dummy work requests to send and receive queues 3. Poll CQ until it returns dummy work requests (with WR Flush Error status) 4. Call ibv_destroy_qp and release resources In order to differentiate dummy and normal WRs new spdk_nvmf_rdma_wr structure was introduced which contains type of WR. Since now it is expected that wr_id field in ibv_recv/send_wr and ibv_wc always points to this structure. Based on WR type wr_id can be safely casted to correct container structure. In case of unsuccessful work completions 'opcode' can not be used for this purpose because it may be invalid (see "IB Architecture Specification Volume 1", ch. 11.4.2.1 "Poll for completion"). Change-Id: Ifb791e36114c619c71ad4d831f2c7972fe7cf13d Signed-off-by: Evgeniy Kochetov <[email protected]>
allen-mlnx
pushed a commit
that referenced
this pull request
Aug 18, 2020
Not all JSON methods require 'params' field to be supplied. Verification of the JSON is done on server side in parse_single_request(). We should not attempt to process garbage values on correct JSON config file during app start. Segfault can be observed if following valid JSON config is supplied: { "method": "framework_wait_init" } Resulting in: json_config.c:388:13: runtime error: applying non-zero offset 18446744073709551600 to null pointer AddressSanitizer:DEADLYSIGNAL ================================================================= ==3386067==ERROR: AddressSanitizer: SEGV on unknown address (pc 0x0000007260ff bp 0x7ffe6ea06890 sp 0x7ffe6ea067e0 T0) ==3386067==The signal is caused by a READ memory access. ==3386067==Hint: this fault was caused by a dereference of a high value address (see register values below). Dissassemble the provided pc to learn which register was used. #0 0x7260ff in app_json_config_load_subsystem_config_entry /home/tzawadzk/spdk/lib/event/json_config.c:391 #1 0x7cbb13 in msg_queue_run_batch /home/tzawadzk/spdk/lib/thread/thread.c:505 #2 0x7cd00a in thread_poll /home/tzawadzk/spdk/lib/thread/thread.c:581 #3 0x7cfe18 in spdk_thread_poll /home/tzawadzk/spdk/lib/thread/thread.c:689 #4 0x71d6ef in _reactor_run /home/tzawadzk/spdk/lib/event/reactor.c:326 #5 0x71eb00 in reactor_run /home/tzawadzk/spdk/lib/event/reactor.c:382 #6 0x71f911 in spdk_reactors_start /home/tzawadzk/spdk/lib/event/reactor.c:477 #7 0x718237 in spdk_app_start /home/tzawadzk/spdk/lib/event/app.c:691 #8 0x407e94 in main /home/tzawadzk/spdk/app/spdk_tgt/spdk_tgt.c:120 #9 0x7f0f2eef2041 in __libc_start_main ../csu/libc-start.c:308 #10 0x4079ad in _start (/home/tzawadzk/spdk/build/bin/spdk_tgt+0x4079ad) Signed-off-by: Tomasz Zawadzki <[email protected]> Change-Id: I7ef1a764467817ad788fdf5dbe17eaeb99dcc22e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3256 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Jim Harris <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
EugeneKochetov
pushed a commit
that referenced
this pull request
May 29, 2022
The controller data structure may be freed before subsystem resume done callback, we can take endpoint as the input parameter to avoid this issue. AddressSanitizer: heap-use-after-free on address 0x625000046100 at pc 0x00000082818f bp 0x7fff7b09bd10 sp 0x7fff7b09bd00 READ of size 8 at 0x625000046100 thread T0 (reactor_0) #0 0x82818e in vfio_user_dev_quiesce_resume_done /spdk/lib/nvmf/vfio_user.c:2147 #1 0x782cc0 in subsystem_state_change_done /spdk/lib/nvmf/subsystem.c:634 #2 0xad047b in _call_completion /spdk/lib/thread/thread.c:2344 #3 0xabc48d in msg_queue_run_batch /spdk/lib/thread/thread.c:710 #4 0xac0670 in thread_poll /spdk/lib/thread/thread.c:926 #5 0xac0ead in spdk_thread_poll /spdk/lib/thread/thread.c:986 #6 0x9a5b4f in _reactor_run /spdk/lib/event/reactor.c:920 #7 0x9a6442 in reactor_run /spdk/lib/event/reactor.c:958 #8 0x9a717c in spdk_reactors_start /spdk/lib/event/reactor.c:1060 #9 0x99884a in spdk_app_start /spdk/lib/event/app.c:643 #10 0x407e82 in main /spdk/app/nvmf_tgt/nvmf_main.c:75 #11 0x7f822095ff42 in __libc_start_main (/lib64/libc.so.6+0x23f42) #12 0x407abd in _start (/spdk/build/bin/nvmf_tgt+0x407abd) 0x625000046100 is located 0 bytes inside of 8320-byte region [0x625000046100,0x625000048180) freed by thread T0 (reactor_0) here: #0 0x7f82219ff91f in __interceptor_free (/lib64/libasan.so.5+0x10d91f) #1 0x837059 in _free_ctrlr /spdk/lib/nvmf/vfio_user.c:2976 #2 0x837327 in free_ctrlr /spdk/lib/nvmf/vfio_user.c:2996 #3 0x843541 in nvmf_vfio_user_close_qpair /spdk/lib/nvmf/vfio_user.c:3742 #4 0x7d1d91 in nvmf_transport_qpair_fini /spdk/lib/nvmf/transport.c:604 #5 0x7ad922 in _nvmf_qpair_destroy /spdk/lib/nvmf/nvmf.c:1055 #6 0x761362 in nvmf_qpair_request_cleanup /spdk/lib/nvmf/ctrlr.c:4026 #7 0x761906 in spdk_nvmf_request_free /spdk/lib/nvmf/ctrlr.c:4041 #8 0x75a931 in nvmf_qpair_free_aer /spdk/lib/nvmf/ctrlr.c:3576 #9 0x7ae626 in spdk_nvmf_qpair_disconnect /spdk/lib/nvmf/nvmf.c:1127 #10 0x83db36 in _vfio_user_qpair_disconnect /spdk/lib/nvmf/vfio_user.c:3433 #11 0xabc48d in msg_queue_run_batch /spdk/lib/thread/thread.c:710 #12 0xac0670 in thread_poll /spdk/lib/thread/thread.c:926 #13 0xac0ead in spdk_thread_poll /spdk/lib/thread/thread.c:986 #14 0x9a5b4f in _reactor_run /spdk/lib/event/reactor.c:920 #15 0x9a6442 in reactor_run /spdk/lib/event/reactor.c:958 #16 0x9a717c in spdk_reactors_start /spdk/lib/event/reactor.c:1060 #17 0x99884a in spdk_app_start /spdk/lib/event/app.c:643 #18 0x407e82 in main /spdk/app/nvmf_tgt/nvmf_main.c:75 #19 0x7f822095ff42 in __libc_start_main (/lib64/libc.so.6+0x23f42) previously allocated by thread T0 (reactor_0) here: #0 0x7f82219fff16 in __interceptor_calloc (/lib64/libasan.so.5+0x10df16) #1 0x837413 in nvmf_vfio_user_create_ctrlr /spdk/lib/nvmf/vfio_user.c:3010 #2 0x83bc68 in nvmf_vfio_user_accept /spdk/lib/nvmf/vfio_user.c:3313 #3 0xabfbd8 in thread_execute_timed_poller /spdk/lib/thread/thread.c:872 #4 0xac0c75 in thread_poll /spdk/lib/thread/thread.c:960 #5 0xac0ead in spdk_thread_poll /spdk/lib/thread/thread.c:986 #6 0x9a5b4f in _reactor_run /spdk/lib/event/reactor.c:920 #7 0x9a6442 in reactor_run /spdk/lib/event/reactor.c:958 #8 0x9a717c in spdk_reactors_start /spdk/lib/event/reactor.c:1060 #9 0x99884a in spdk_app_start /spdk/lib/event/app.c:643 #10 0x407e82 in main /spdk/app/nvmf_tgt/nvmf_main.c:75 #11 0x7f822095ff42 in __libc_start_main (/lib64/libc.so.6+0x23f42) SUMMARY: AddressSanitizer: heap-use-after-free /spdk/lib/nvmf/vfio_user.c:2147 in vfio_user_dev_quiesce_resume_done Change-Id: Icf5e5b360b9107a3c5eb960ae59b7fe10ace1c66 Signed-off-by: Changpeng Liu <[email protected]> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11420 Community-CI: Broadcom CI <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Dong Yi <[email protected]> Reviewed-by: John Levon <[email protected]> Reviewed-by: Ben Walker <[email protected]> Reviewed-by: Jim Harris <[email protected]>
yshestakov
pushed a commit
that referenced
this pull request
Sep 19, 2023
Ubsan with clang complains when using spdk_ioviter with more iters than declared in the array: iov.c:69:9: runtime error: index 3 out of bounds for type 'struct spdk_single_ioviter[2]' #0 0x5df709 in spdk_ioviter_firstv /home/vagrant/spdk_repo/spdk/lib/util/iov.c:69:9 #1 0x53780b in raid5f_xor_stripe /home/vagrant/spdk_repo/spdk/module/bdev/raid/raid5f.c:270:24 #2 0x531bd8 in raid5f_submit_write_request /home/vagrant/spdk_repo/spdk/module/bdev/raid/raid5f.c:520:2 #3 0x52a03a in raid5f_submit_rw_request /home/vagrant/spdk_repo/spdk/module/bdev/raid/raid5f.c:596:9 #4 0x548c17 in test_raid5f_write_request /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:550:2 #5 0x544e18 in test_raid5f_submit_rw_request /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:714:3 #6 0x553e61 in __test_raid5f_submit_full_stripe_write_request /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:878:3 #7 0x543f84 in run_for_each_raid5f_config /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:748:3 #8 0x527ac1 in test_raid5f_submit_full_stripe_write_request /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:885:2 #9 0x7f4a71a0960a (/usr/lib64/libcunit.so.1+0x460a) (BuildId: 9c82dd336cbccd99721651ac0a04435e746e0fc0) #10 0x7f4a71a09937 (/usr/lib64/libcunit.so.1+0x4937) (BuildId: 9c82dd336cbccd99721651ac0a04435e746e0fc0) #11 0x7f4a71a0a897 in CU_run_all_tests (/usr/lib64/libcunit.so.1+0x5897) (BuildId: 9c82dd336cbccd99721651ac0a04435e746e0fc0) #12 0x524fe8 in main /home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut.c:1006:2 #13 0x7f4a711d750f in __libc_start_call_main (/usr/lib64/libc.so.6+0x2750f) (BuildId: 81daba31ee66dbd63efdc4252a872949d874d136) #14 0x7f4a711d75c8 in __libc_start_main@GLIBC_2.2.5 (/usr/lib64/libc.so.6+0x275c8) (BuildId: 81daba31ee66dbd63efdc4252a872949d874d136) #15 0x4235b4 in _start (/home/vagrant/spdk_repo/spdk/test/unit/lib/bdev/raid/raid5f.c/raid5f_ut+0x4235b4) (BuildId: 028d075edd1a7cd17881fd678ef076adfdbac13d) Fix this by making iters a zero-length array and put it in a union with a two-element array to keep the default size for compatibility. Change-Id: I8573b015755e9986cdadbfa1705d269d51a7c2b7 Signed-off-by: Artur Paszkiewicz <[email protected]> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18402 Reviewed-by: Jim Harris <[email protected]> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <[email protected]> Reviewed-by: Shuhei Matsumoto <[email protected]>
EugeneKochetov
pushed a commit
that referenced
this pull request
Apr 9, 2024
As per typedef in nvme.h the spdk_nvme_cpl argument should be a pointer to a const struct. This fixes runtimer error under clang >= 17.x which now makes the -fsanitize=function available for C and which on our end is being enabled via -fsanitize=undefined under UBSAN. Error in question: Test: test_spdk_nvme_detach ...passed Test: test_nvme_completion_poll_cb ...passed Test: test_nvme_user_copy_cmd_complete .../root/spdk/lib/nvme/nvme.c:417:2: runtime error: call to function dummy_cb through pointer to incorrect function type 'void (*)(void *, const struct spdk_nvme_cpl *)' /root/spdk/test/unit/lib/nvme/nvme.c/nvme_ut.c:584: note: dummy_cb defined here #0 0x5098e0 in nvme_user_copy_cmd_complete /root/spdk/lib/nvme/nvme.c:417:2 #1 0x532161 in test_nvme_user_copy_cmd_complete /root/spdk/test/unit/lib/nvme/nvme.c/nvme_ut.c:604:2 #2 0x7f08c952266a (/usr/lib64/libcunit.so.1+0x466a) (BuildId: d99e3b60795f2ce01ada820b4b7e3cd84d8150fe) #3 0x7f08c95229c7 (/usr/lib64/libcunit.so.1+0x49c7) (BuildId: d99e3b60795f2ce01ada820b4b7e3cd84d8150fe) #4 0x7f08c9523a9f in CU_run_all_tests (/usr/lib64/libcunit.so.1+0x5a9f) (BuildId: d99e3b60795f2ce01ada820b4b7e3cd84d8150fe) #5 0x55555e in run_tests /root/spdk/lib/ut/ut.c:169:3 #6 0x552aec in spdk_ut_run_tests /root/spdk/lib/ut/ut.c:225:8 #7 0x522d52 in main /root/spdk/test/unit/lib/nvme/nvme.c/nvme_ut.c:1664:17 #8 0x7f08c8c28149 in __libc_start_call_main (/usr/lib64/libc.so.6+0x28149) (BuildId: 7ea8d85df0e89b90c63ac7ed2b3578b2e7728756) #9 0x7f08c8c2820a in __libc_start_main@GLIBC_2.2.5 (/usr/lib64/libc.so.6+0x2820a) (BuildId: 7ea8d85df0e89b90c63ac7ed2b3578b2e7728756) #10 0x42b6a4 in _start (/root/spdk/test/unit/lib/nvme/nvme.c/nvme_ut+0x42b6a4) (BuildId: 6fc2caaf777030becad2d0f660ec68443f3380b4) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /root/spdk/lib/nvme/nvme.c:417:2 in ./test/unit/unittest.sh: line 85: 75349 Aborted (core dumped) $valgrind $testdir/lib/nvme/nvme.c/nvme_ut Change-Id: Iddbd5fc0dee0ef6a6cc1f032e079f6119e76aed9 Signed-off-by: Michal Berger <[email protected]> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22025 Reviewed-by: Jim Harris <[email protected]> Community-CI: Mellanox Build Bot Reviewed-by: Konrad Sztyber <[email protected]> Tested-by: SPDK CI Jenkins <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Recommended QP shutdown flow implementation for RQ per QP case.