aboutsummaryrefslogtreecommitdiff
path: root/weed/mount/weedfs_file_write.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/mount/weedfs_file_write.go')
-rw-r--r--weed/mount/weedfs_file_write.go15
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
}