Iwould like to know why there is no "seek" implementation in davfs, whereas it is supported by webdav (http header "range:") ?
Thanks in advance.
there are several reasons why davfs2 does no partial transfers of files.
For read and write the coda kernel module accesses the cache file directly; davfs2 is not involved in read and write and not even notified. It has to store the complete file on disk, to enable access by coda.
Next release of davfs2 will propably support the fuse kernel module. This one sends read and write request to davfs2, so we could change this, but there are serious problems.
As a file system davfs2 has to handle writing too. Actually WebDAV was created to enable the modification of files on the server. But HTTP/WebDAV can not handle PUT for partial documents (or did I miss something?). For this to work, servers must be able, to accept partial documents with changed content length and merge them into the document.
But even if this problems would be solved there remains the "lost update problem". If we have locally only part of the document and the document is changed on the server, the locally changed part is useless. There is no chance to complete it to something usefull. With the full document we will have two versions, the locally changed version and the remotely changed version. The user can decide which to use, or haw to merge them.
So partial documents would be read only. I doubt that this is worth the effort.
I know that there is sometimes a lot of useless traffic, because e.g. graphical file browsers open just any file in a directory just to decide what icon to display. I believe that the permanent cache of davfs2-1.x.x will reduce this traffic dramatically, as it can serve most of this requests out of the cache.
Thanks a lot for this complete and relevant answer.
Congratulations for all your work.
thinking about it:
Partial downloads when opening a file for reading might be worth the effort in cases where applications open many big files just to evaluate the file type. And it should be possible with the fuse kernel module.
But it would need some additional logic to decide when to do partial download, when to download the rest of a file etc.
So I will keep it in mind, but it is not on top of my todo list.