diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go index 64da38bcf..738423b6a 100644 --- a/weed/filesys/filehandle.go +++ b/weed/filesys/filehandle.go @@ -26,7 +26,6 @@ type FileHandle struct { contentType string handle uint64 sync.Mutex - sync.WaitGroup f *File RequestId fuse.RequestID // unique ID for request @@ -63,9 +62,6 @@ var _ = fs.HandleReleaser(&FileHandle{}) func (fh *FileHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error { - fh.Add(1) - defer fh.Done() - fh.Lock() defer fh.Unlock() @@ -173,9 +169,6 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, error) { // Write to the file handle func (fh *FileHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error { - fh.Add(1) - defer fh.Done() - fh.dirtyPages.writerPattern.MonitorWriteAt(req.Offset, len(req.Data)) fh.Lock() @@ -217,8 +210,6 @@ func (fh *FileHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) err glog.V(4).Infof("Release %v fh %d open=%d", fh.f.fullpath(), fh.handle, fh.f.isOpen) - fh.Wait() - fh.f.wfs.handlesLock.Lock() fh.f.isOpen-- fh.f.wfs.handlesLock.Unlock() @@ -250,9 +241,6 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error { return nil } - fh.Add(1) - defer fh.Done() - fh.Lock() defer fh.Unlock() diff --git a/weed/filesys/wfs.go b/weed/filesys/wfs.go index f6a6031d2..54eb9064b 100644 --- a/weed/filesys/wfs.go +++ b/weed/filesys/wfs.go @@ -187,15 +187,15 @@ func (wfs *WFS) Fsync(file *File, header fuse.Header) error { existingHandle, found := wfs.handles[inodeId] wfs.handlesLock.Unlock() - if found && existingHandle != nil && existingHandle.f.isOpen > 0 { - - existingHandle.Add(1) - defer existingHandle.Done() + if found && existingHandle != nil { existingHandle.Lock() defer existingHandle.Unlock() - return existingHandle.doFlush(context.Background(), header) + if existingHandle.f.isOpen > 0 { + return existingHandle.doFlush(context.Background(), header) + } + } return nil