You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
winfsp issues a call to readlink during startup to see if it's supported. The order of the fields in the fuse_operations struct in winfsp is
structfuse_operations
{
/* S - supported by WinFsp *//* S */int (*getattr)(constchar*path, structfuse_stat*stbuf);
/* S */int (*getdir)(constchar*path, fuse_dirh_th, fuse_dirfil_tfiller);
/* S */int (*readlink)(constchar*path, char*buf, size_tsize);
If you mount an file system on Windows, you should immediately see an init, statfs, getattr and then a readlink call. These all happen before any other calls.
This is the winfsp code within fsp_fuse_loop_start (in fuse_loop.c).
However, if readlink is not set (ie. the reported bug), you won't see the readlink call during startup. fsp_fuse_loop_start is using these calls to probe the features that are available in your FUSE-based filesystem. If it can't execute a readlink, then it will not properly handle any files that return a mode of S_IFLNK from a stat call (aka getattr).
I don't have a Java code sample at the moment using symbolic links. I ran into the bug while tracing winfsp's feature probing (a separate issue where I was trying to see if I could get winfsp to enable ADS support over FUSE).
winfsp issues a call to readlink during startup to see if it's supported. The order of the fields in the fuse_operations struct in winfsp is
However, in jnr-fuse, FuseOperations, it's
Since getdir is deprecated, and usually null, winfsp believes that readlink isn't implemented.
I found that by flipping the order of getdir/readlink in FuseOperations, winfsp started issuing readlink calls correctly.
I do not know if that'll have any impact in Linux or OSX.
The text was updated successfully, but these errors were encountered: