diff --git a/internal/fusefs/fuse.go b/internal/fusefs/fuse.go index a9adaba..2686695 100644 --- a/internal/fusefs/fuse.go +++ b/internal/fusefs/fuse.go @@ -298,9 +298,6 @@ func (fh *bytesFileWriteHandle) Write(ctx context.Context, data []byte, off int6 var _ fs.FileFlusher = (*bytesFileWriteHandle)(nil) func (fh *bytesFileWriteHandle) Flush(ctx context.Context) (errno syscall.Errno) { - if len(fh.content) == 0 { - return 0 - } log.Debug("FUSE Attempting flush").Str("path", fh.path).Send() fp, err := myfs.Create(fh.path, uint32(len(fh.content))) @@ -309,6 +306,16 @@ func (fh *bytesFileWriteHandle) Flush(ctx context.Context) (errno syscall.Errno) return syscallErr(err) } + if len(fh.content) == 0 { + log.Debug("FUSE Flush no data to write").Str("path", fh.path).Send() + err = fp.Close() + if err != nil { + log.Error("FUSE Flush failed during close").Str("path", fh.path).Err(err).Send() + return syscallErr(err) + } + return 0 + } + go func() { // For every progress event for sent := range fp.Progress() {