From: Harris, James R <james.r.harris at intel.com>
To: spdk@lists.01.org
Subject: Re: [SPDK] Rocksdb test case issue
Date: Fri, 15 Jun 2018 01:09:00 +0000 [thread overview]
Message-ID: <E14B2DA5-2B1B-46BC-B03D-7F6F2F26AF93@intel.com> (raw)
In-Reply-To: F1151624ABEE794C8A34A4CA571EEAA850A39C@BGSMSX105.gar.corp.intel.com
[-- Attachment #1: Type: text/plain, Size: 2190 bytes --]
Hi Kunal,
We have come up with a slightly different approach than spdk_bdev_io_reserve() – this one is called spdk_bdev_queue_io_wait(). Please see https://review.gerrithub.io/#/c/spdk/spdk/+/415074/.
When an SPDK bdev I/O submission function is called (i.e. read, readv, read_blocks, write, unmap, etc.) and it fails with –ENOMEM, it means no spdk_bdev_io structure was available. The caller can then request a callback using spdk_bdev_queue_io_wait() to be notified when an spdk_bdev_io is available on the same thread. The caller is responsible for providing the storage for the spdk_bdev_io_wait_entry structure, and saving any state so that it knows where to continue when the spdk_bdev_io is available. In your striping case, that might mean keeping track if the first child I/O is successfully submitted, but you need to wait for an spdk_bdev_io for subsequent child I/O. Even the most basic case, where the striping translation results in only one child I/O – and that one fails with –ENOMEM – will need to be accounted for. (All virtual bdev modules will need to make similar changes).
Note that other patches have been pushed this week to allow specifying the spdk_bdev_io pool size - specifically to help with developing and testing this new code and applications/drivers that will be using the new API.
The patch still needs a bit more work but I wanted to bring it to your attention so you could provide feedback. The bdevperf utility has been updated in this patch to make use of the new API and served well as a test case (i.e. limit the spdk_bdev_io pool to 32 but run with a queue depth of 128).
Regards,
-Jim
On 6/11/18, 8:30 AM, "SPDK on behalf of Sablok, Kunal" <spdk-bounces(a)lists.01.org on behalf of kunal.sablok(a)intel.com> wrote:
Thanks Ben, As I understand from one of your recent review comment, somebody is working on SPDK API spdk_bdev_io_reserve(). I will be using this API and then waitq and poller will be removed, also the RocksDB test case issue should go away with this. Please let me know when spdk_bdev_io_reserve() is up in SPDK, I will merge with this.
Regards,
Kunal
[…]
next reply other threads:[~2018-06-15 1:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-15 1:09 Harris, James R [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-06-15 9:47 [SPDK] Rocksdb test case issue Sablok, Kunal
2018-06-11 23:46 Harris, James R
2018-06-11 15:30 Sablok, Kunal
2018-06-08 16:41 Walker, Benjamin
2018-06-06 23:16 Sablok, Kunal
2018-06-06 22:25 Walker, Benjamin
2018-06-05 8:59 Sablok, Kunal
2018-06-01 7:24 Sablok, Kunal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E14B2DA5-2B1B-46BC-B03D-7F6F2F26AF93@intel.com \
--to=spdk@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox