diff options
Diffstat (limited to 'weed/mount/weedfs_file_write.go')
| -rw-r--r-- | weed/mount/weedfs_file_write.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/weed/mount/weedfs_file_write.go b/weed/mount/weedfs_file_write.go index 7b13d54ff..5a9a21ded 100644 --- a/weed/mount/weedfs_file_write.go +++ b/weed/mount/weedfs_file_write.go @@ -1,10 +1,10 @@ package mount import ( - "context" "github.com/hanwen/go-fuse/v2/fuse" "net/http" "syscall" + "time" ) /** @@ -46,8 +46,10 @@ func (wfs *WFS) Write(cancel <-chan struct{}, in *fuse.WriteIn, data []byte) (wr fh.dirtyPages.writerPattern.MonitorWriteAt(int64(in.Offset), int(in.Size)) - fh.orderedMutex.Acquire(context.Background(), 1) - defer fh.orderedMutex.Release(1) + tsNs := time.Now().UnixNano() + + fh.Lock() + defer fh.Unlock() entry := fh.GetEntry() if entry == nil { @@ -59,7 +61,7 @@ func (wfs *WFS) Write(cancel <-chan struct{}, in *fuse.WriteIn, data []byte) (wr entry.Attributes.FileSize = uint64(max(offset+int64(len(data)), int64(entry.Attributes.FileSize))) // glog.V(4).Infof("%v write [%d,%d) %d", fh.f.fullpath(), req.Offset, req.Offset+int64(len(req.Data)), len(req.Data)) - fh.dirtyPages.AddPage(offset, data, fh.dirtyPages.writerPattern.IsSequentialMode()) + fh.dirtyPages.AddPage(offset, data, fh.dirtyPages.writerPattern.IsSequentialMode(), tsNs) written = uint32(len(data)) @@ -70,5 +72,10 @@ func (wfs *WFS) Write(cancel <-chan struct{}, in *fuse.WriteIn, data []byte) (wr fh.dirtyMetadata = true + if IsDebugFileReadWrite { + // print("+") + fh.mirrorFile.WriteAt(data, offset) + } + return written, fuse.OK } |
