aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/filehandle.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-10-23 11:31:57 -0700
committerChris Lu <chris.lu@gmail.com>2020-10-23 11:31:57 -0700
commit71624858afaa5ceb879c2e81e7c4fd7357879c25 (patch)
treec67617bac3e039958f7c0d11fc675862d88a0878 /weed/filesys/filehandle.go
parent29c9fa2ef2cac7a0644ac0f6e39ccd18d410fb00 (diff)
downloadseaweedfs-71624858afaa5ceb879c2e81e7c4fd7357879c25.tar.xz
seaweedfs-71624858afaa5ceb879c2e81e7c4fd7357879c25.zip
avoid reusing cached []byte
this logic is just to ensure 100% correct. fuse message, data+message hearder > 512 will not be cached.
Diffstat (limited to 'weed/filesys/filehandle.go')
-rw-r--r--weed/filesys/filehandle.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index e3163117c..a0e994bf9 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -143,6 +143,11 @@ func (fh *FileHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *f
// write the request to volume servers
data := req.Data
+ if len(data) <= 512 {
+ // fuse message cacheable size
+ data = make([]byte, len(req.Data))
+ copy(data, req.Data)
+ }
fh.f.entry.Attributes.FileSize = uint64(max(req.Offset+int64(len(data)), int64(fh.f.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))