Message ID | 20230221073736.628851-1-ZiyangZhang@linux.alibaba.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [tools/io_uring] tools/io_uring: correctly set "ret" for sq_poll case | expand |
On 2/21/23 12:37?AM, Ziyang Zhang wrote: > For sq_poll case, "ret" is not initialized or cleared/set. In this way, > output of this test program is incorrect and we can not even stop this > program by pressing CTRL-C. > > Reset "ret" to zero in each submission/completion round, and assign > "ret" to "this_reap". Can you check if this issue also exists in the fio copy of this, which is t/io_uring.c in: git://git.kernel.dk/fio The copy in the kernel is pretty outdated at this point, and should probably get removed. But if the bug is in the above main version, then we should fix it there and then ponder if we want to remove the one in the kernel or just get it updated to match the upstream version.
On 2023/2/23 11:46, Jens Axboe wrote: > On 2/21/23 12:37?AM, Ziyang Zhang wrote: >> For sq_poll case, "ret" is not initialized or cleared/set. In this way, >> output of this test program is incorrect and we can not even stop this >> program by pressing CTRL-C. >> >> Reset "ret" to zero in each submission/completion round, and assign >> "ret" to "this_reap". > > Can you check if this issue also exists in the fio copy of this, which > is t/io_uring.c in: > > git://git.kernel.dk/fio > > The copy in the kernel is pretty outdated at this point, and should > probably get removed. But if the bug is in the above main version, then > we should fix it there and then ponder if we want to remove the one in > the kernel or just get it updated to match the upstream version. > Hi Jens, I have checked t/io_uring.c and the code is correct with sq_poll. Regards, Zhang
On 2/23/23 7:25 PM, Ziyang Zhang wrote: > On 2023/2/23 11:46, Jens Axboe wrote: >> On 2/21/23 12:37?AM, Ziyang Zhang wrote: >>> For sq_poll case, "ret" is not initialized or cleared/set. In this way, >>> output of this test program is incorrect and we can not even stop this >>> program by pressing CTRL-C. >>> >>> Reset "ret" to zero in each submission/completion round, and assign >>> "ret" to "this_reap". >> >> Can you check if this issue also exists in the fio copy of this, which >> is t/io_uring.c in: >> >> git://git.kernel.dk/fio >> >> The copy in the kernel is pretty outdated at this point, and should >> probably get removed. But if the bug is in the above main version, then >> we should fix it there and then ponder if we want to remove the one in >> the kernel or just get it updated to match the upstream version. >> > > Hi Jens, > > I have checked t/io_uring.c and the code is correct with sq_poll. OK good, I'll attempt a sync with the kernel copy...
diff --git a/tools/io_uring/io_uring-bench.c b/tools/io_uring/io_uring-bench.c index 7703f0118385..3c0feb48f6f6 100644 --- a/tools/io_uring/io_uring-bench.c +++ b/tools/io_uring/io_uring-bench.c @@ -289,6 +289,7 @@ static void *submitter_fn(void *data) do { int to_wait, to_submit, this_reap, to_prep; + ret = 0; if (!prepped && s->inflight < DEPTH) { to_prep = min(DEPTH - s->inflight, BATCH_SUBMIT); prepped = prep_more_ios(s, to_prep); @@ -334,6 +335,8 @@ static void *submitter_fn(void *data) this_reap += r; } while (sq_thread_poll && this_reap < to_wait); s->reaps += this_reap; + if (sq_thread_poll) + ret = this_reap; if (ret >= 0) { if (!ret) {
For sq_poll case, "ret" is not initialized or cleared/set. In this way, output of this test program is incorrect and we can not even stop this program by pressing CTRL-C. Reset "ret" to zero in each submission/completion round, and assign "ret" to "this_reap". Signed-off-by: Ziyang Zhang <ZiyangZhang@linux.alibaba.com> --- tools/io_uring/io_uring-bench.c | 3 +++ 1 file changed, 3 insertions(+)