Getattr FUSE behaviour under WebDAV

NetDrive version: 2 or 3 both the same
Windows/Mac Version: Windows 10

Hi

I’m writing a WebDAV caching tool for content on my NAS. The tool looks to see if a file exists in a path mapped under a local WEBDAV server, which has NetDrive as a local client, and if the file does not exist there, the tool will look (using its own WEBDAV client) to the NAS to the same path and if the file exists there, it will pull it down to the same path locally (the tool with mkdirp-ing all the way to ensure the paths are the same betwen the local store and the NAS)

I have the problem with Netdrive’s FUSE implementation that a getattr recieved to NetDrive’s FUSE filesystem driver (the first step of me getting the file I want - as witnessed from Debug logs) is not translated into a PROPFIND on the file that has been asked for, instead if is translated into a PROPFIND with Depth1 against the parent folder, and if the file is not in that folder, the getattr will fail, without a PROPFIND ever directly being called against the file itself. My problem there is that only NetDrive knows what file has been asked for, and won’t tell anything upstream of it, therefore there’s nothing sensible I can do in order to provide the file in the folder, which is what the ultimate client has requested NetDrive produce for it.

In contrast, Windows’ WedDAV client directly performs a PROPFIND on the file itself, giving me all the information I need to cache the file locally

Could NetDrive not try a PROPFIND against the requested file? Why is the implementation like it is?

thanks

tony

1 Like

Hello tony.

Thank . you for interesting in NetDrive.

It will take a few days to answer your questions in detail.

Regards.

Hello tony.

Thank you for interesting in NetDrive.

As you might have already noticed, NetDrive supports variety of protocols including WebDAV. So it is implemented to serve protocols that are not supposed themselves to retrieve information of a single file.

Regards.