Hi, I'm writing primarily because of the bug users are reporting in my network-based filesystem [1]. In short, rsync first creates temporary file, flushes and closes it and then immediately opens it again. The problem is, sometimes I see that afterwards it tries to write to a closed fd resulting in IO error. Is there a possibility that FUSE can execute fresh OPEN call before pending RELEASE for the same inode that was processed? I see OPEN calls are always sync in fuse_open_common but RELEASE seems to be async as I see it goes to background queue in fuse_release_common->fuse_file_put->fuse_request_send_background, can this be the reason? Is there something that I'm missing? Maybe it's me implementing fs in wrong way? How is this kind of behavior is corrected? [1]: https://github.com/libfuse/libfuse/issues/295
Attachment:
signature.asc
Description: OpenPGP digital signature