diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-08-23 00:35:50 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-08-23 00:35:50 -0700 |
| commit | 77393d3d304206cdc240f59496aab75f07b90487 (patch) | |
| tree | c3d30a291d944bbc626bb0314ad15df9cf844f70 | |
| parent | d60bcbf08ab11c75ffcba93be586ef9e42ccdc40 (diff) | |
| download | seaweedfs-77393d3d304206cdc240f59496aab75f07b90487.tar.xz seaweedfs-77393d3d304206cdc240f59496aab75f07b90487.zip | |
add file handle locking when changing file entry
| -rw-r--r-- | weed/filesys/file.go | 10 |
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() { |
