On 03/30/2010 09:23 AM, Avi Kivity wrote:
On 03/30/2010 05:07 PM, Anthony Liguori wrote:
On 03/30/2010 09:03 AM, Avi Kivity wrote:
So it looks like we really only have one operation
(qcow2_alloc_cluster_link_l2) that blocks. Do we really think that
it's sufficiently difficult to make this function asynchronous that
it justifies threading the block layer?
There are also tons of bdrv_pread()s and bdrv_pwrite()s. Isn't
growing some of the tables synchronous? how about creating a snapshot?
Eh, that ruins my whole argument.
But we can keep on arguing regardless, yes?
Of course :-)
Both. My plan is:
(1) some generic infrastructure
(2) kit that turns a synchronous block format driver into an
asynchronous one using (1), limited to one outstanding request
(3) adaptations to qcow2 using (1) to make it fully asynchronous,
capable of multiple outstanding requests (except when it issues a sync
request)
I've mostly done (1) and am contemplating (2).
Sounds reasonable.
Regards,
Anthony Liguori