aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-08-23 00:35:50 -0700
committerChris Lu <chris.lu@gmail.com>2020-08-23 00:35:50 -0700
commit77393d3d304206cdc240f59496aab75f07b90487 (patch)
treec3d30a291d944bbc626bb0314ad15df9cf844f70
parentd60bcbf08ab11c75ffcba93be586ef9e42ccdc40 (diff)
downloadseaweedfs-77393d3d304206cdc240f59496aab75f07b90487.tar.xz
seaweedfs-77393d3d304206cdc240f59496aab75f07b90487.zip
add file handle locking when changing file entry
-rw-r--r--weed/filesys/file.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/weed/filesys/file.go b/weed/filesys/file.go
index d9e1f2662..43f3ddf07 100644
--- a/weed/filesys/file.go
+++ b/weed/filesys/file.go
@@ -106,6 +106,16 @@ func (file *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *f
if err := file.maybeLoadEntry(ctx); err != nil {
return err
}
+ if file.isOpen > 0 {
+ file.wfs.handlesLock.Lock()
+ fileHandle := file.wfs.handles[file.fullpath().AsInode()]
+ file.wfs.handlesLock.Unlock()
+
+ if fileHandle != nil {
+ fileHandle.Lock()
+ defer fileHandle.Unlock()
+ }
+ }
if req.Valid.Size() {