On Tue, 2007-08-21 at 10:06 -0400, Gregory Haskins wrote: > On Tue, 2007-08-21 at 23:47 +1000, Rusty Russell wrote: > > > > In the guest -> host direction, an interface like virtio is designed > > for batching, with the explicit distinction between add_buf & sync. > > Right. IOQ has "iter_push()" and "signal()" as synonymous operations.
Hi Rusty, This reminded me of an area that I thought might have been missing in virtio compared to IOQ. That is, flexibility in the io-completion via the distinction between "signal" and "sync". sync() implies that its a blocking call based on the full drain of the queue, correct? the ioq_signal() operation is purely a "kick". You can, of course, still implement synchronous functions with a higher layer construct such as the ioq->wq. For example: void send_sync(struct ioq *ioq, struct sk_buff *skb) { DECLARE_WAITQUEUE(wait, current); struct ioq_iterator iter; ioq_iter_init(ioq, &iter, ioq_idxtype_inuse, IOQ_ITER_AUTOUPDATE); ioq_iter_seek(&iter, ioq_seek_head, 0, 0); /* Update the iter.desc->ptr with skb details */ mb(); iter.desc->valid = 1; iter.desc->sown = 1; /* give ownership to the south */ mb(); ioq_iter_push(&iter, 0); add_wait_queue(&ioq->wq, &wait); set_current_state(TASK_UNINTERRUPTIBLE); /* Wait until we own it again */ while (!iter.desc->sown) schedule(); set_current_state(TASK_RUNNING); remove_wait_queue(&ioq->wq, &wait); } But really the goal behind this design was to allow for fine-grained selection of how io-completion is notified. E.g. callback (e.g. interrupt-driven) deferred reclaimation/reaping (see ioqnet_tx_complete), sleeping-wait via ioq->wq, busy-wait, etc. Is there a way to do something similar in virtio? (and forgive me if there is..I still haven't seen the code). And if not and people like that idea, what would be a good way to add it to the interface? Regards, -Greg ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel