Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Fuse Wrapper API version #182

Open
Liryna opened this issue Feb 23, 2016 · 6 comments
Open

Update Fuse Wrapper API version #182

Liryna opened this issue Feb 23, 2016 · 6 comments

Comments

@Liryna
Copy link
Member

Liryna commented Feb 23, 2016

Fuse wrapper is using a old API version. This should be updated to the latest fuse API version.

Build info
https://github.com/dokan-dev/dokany/wiki/FUSE#cygwin

Libfuse on github:
https://github.com/libfuse/libfuse

@Liryna
Copy link
Member Author

Liryna commented Feb 23, 2016

@matepek @toksaitov do you now if there is a lot to do for updating it ?

@matepek
Copy link
Contributor

matepek commented Feb 24, 2016

Hi @Liryna! I'm planning to look after it, but it could take a while.

@jetwhiz
Copy link

jetwhiz commented Mar 25, 2016

Hi @Liryna -- is this update designed to fix the issue where it is not possible to rename files and folders with Dokany v1.0?

@Liryna
Copy link
Member Author

Liryna commented Mar 25, 2016

Hi @jetwhiz ,

Unfortunatly this is not related. The rename issue come from how Linux and Windows handle the mechanisme.

See for more informations: https://github.com/dokan-dev/dokany/wiki/FUSE#rename--remove-issue

Here @g3gg0 explained how he made it work: #178 (comment)

@Rondom
Copy link
Contributor

Rondom commented Apr 26, 2016

I notice that even in the current Dokan-FUSE version, some headers such as fuse-lowlevel.h are missing.

@Rondom
Copy link
Contributor

Rondom commented May 18, 2016

On a closer look I don't think many people will need fuse-lowlevel.h and it would be difficult to implement because it is very specific to the the Linux kernel FUSE ABI.

I am currently porting a FUSE driver using Dokan-FUSE and I will post my findings about what is missing here:

  • fallocate: In order for Dokan-FUSE to support this completely (i.e. also for sparse files), Dokan needs to support FSCTL_SET_SPARSE first, which it does not, if I have read the source correctly.
  • read_buf, write_buf: zero-copy IO (splice on Linux). Windows should support similar mechanisms. Needs Dokan-Support first.
  • ioctl: Theoretically possible, but this would need wrapping as ioctls are different across filesystems and OSes and I am not even sure whether it is technically possible because you cannot know the size of the ioctl data (correct me, if I am wrong on this).
  • setactl: Soon to merged in FUSE3. Simplified interface for POSIX ACLs (see also comment below on xattrs
  • xattrs: This needs quite some thought and consideration to do it right. We should look at how ntfs-3g, Samba and Cygwin handle xattrs and POSIX ACLs in particular and check in how far their approaches are in line with another and in how far we could support similar semantics in Dokan-FUSE. This is mostly about getting things right and making sure that Cygwin and probably now also WSL consume xattrs correctly.
  • classic unix permissions: need to check with Cygwin, SFU and WSL. WSL seems to have thrown previous work over the board for some reason, so we end up with different ways of expressing the same thing
  • release, releasedir: The semantics are hard to get right probably as Windows and POSIX differ in how they treat opening/closing of files, but maybe it is easier than expected.
  • lock, flock: Need to look at POSIX and BSD locks to see whether we can support them while keeping semantics correct. POSIX locks are advisory by default and my impression is that Windows prefers mandatory locking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants