On Mon, Mar 25, 2013 at 1:32 PM, Richard W.M. Jones <rjo...@redhat.com> wrote: > On Fri, Mar 22, 2013 at 01:04:55PM +0000, Richard W.M. Jones wrote: >> I got it working with Curl, patch attached. >> >> However there are multiple issues (these are mainly notes for myself): >> >> (1) libcurl cannot read the size of the file. I had to hard-code >> this. This is probably just a shortcoming of libcurl (libssh2/sftp >> itself can read the size of files). Will try to work on a patch for >> upstream. > > After my holiday and in the cold of day I've had a long look at the > SFTP implementation in libcurl. > > https://github.com/bagder/curl/blob/master/lib/ssh.c > > It's implemented as a huge state machine and simply implementing (1) > above is problematic (I believe we would have to reopen the connection > after our call to curl_easy_perform). > > The larger issue is that the qemu curl block driver doesn't support > writes. Now these could in theory be added. Indeed curl does support > "random access" writes, although AFAICT you have to open a new > connection each time you want to seek backwards, and you can't read > and write over the same connection (so you'd need >= 1 connections for > reading and another >= 1 connections for writing). > > I think I will continue with the pure libssh2-based block driver, > making it support all the missing features discussed earlier: > > http://www.mail-archive.com/qemu-devel@nongnu.org/msg161997.html > > plus of course non-blocking AIO. > > I think this way we'll end up with a much more robust, reliable and > easier to debug ssh implementation in qemu.
Fair enough. Stefan