On Tue, Jun 11, 2019 at 07:17:14PM +0800, Fam Zheng wrote: > On Mon, 06/10 19:18, Aarushi Mehta wrote: > > + /* Prevent infinite loop if submission is refused */ > > + if (ret <= 0) { > > + if (ret == -EAGAIN) { > > + continue; > > + } > > + break; > > + } > > + s->io_q.in_flight += ret; > > + s->io_q.in_queue -= ret; > > + } > > + s->io_q.blocked = (s->io_q.in_queue > 0); > > I'm confused about s->io_q.blocked. ioq_submit is where it gets updated, but > if it becomes true, calling ioq_submit will be fenced. So how does it get > cleared? When blocked, additional I/O requests are not submitted until the next completion. See qemu_luring_process_completions_and_submit() for the code path where ioq_submit() gets called again. Stefan