diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-06-02 03:40:08 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-06-02 03:40:08 -0700 |
| commit | 3db1642392580ebfb23fa71791eaa33a04a2047f (patch) | |
| tree | ed1674e3cae1e350cb201151bb8e9d9c181f9660 | |
| parent | 556cc3a4ca6702346688a82e9b2fb72266c2c307 (diff) | |
| download | seaweedfs-3db1642392580ebfb23fa71791eaa33a04a2047f.tar.xz seaweedfs-3db1642392580ebfb23fa71791eaa33a04a2047f.zip | |
mount: skip persisting metadata if file is open
| -rw-r--r-- | weed/filesys/file.go | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/weed/filesys/file.go b/weed/filesys/file.go index 4b711ecee..8a5b619ac 100644 --- a/weed/filesys/file.go +++ b/weed/filesys/file.go @@ -117,12 +117,12 @@ func (file *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *f } if file.isOpen > 0 { file.wfs.handlesLock.Lock() - fileHandle := file.wfs.handles[file.Id()] + fh := file.wfs.handles[file.Id()] file.wfs.handlesLock.Unlock() - if fileHandle != nil { - fileHandle.Lock() - defer fileHandle.Unlock() + if fh != nil { + fh.Lock() + defer fh.Unlock() } } @@ -207,6 +207,11 @@ func (file *File) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error if err := setxattr(entry, req); err != nil { return err } + file.dirtyMetadata = true + + if file.isOpen > 0 { + return nil + } return file.saveEntry(entry) @@ -224,6 +229,11 @@ func (file *File) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) if err := removexattr(entry, req); err != nil { return err } + file.dirtyMetadata = true + + if file.isOpen > 0 { + return nil + } return file.saveEntry(entry) @@ -351,6 +361,8 @@ func (file *File) saveEntry(entry *filer_pb.Entry) error { file.wfs.metaCache.InsertEntry(context.Background(), filer.FromPbEntry(request.Directory, request.Entry)) + file.dirtyMetadata = false + return nil }) } |
