From 3db1642392580ebfb23fa71791eaa33a04a2047f Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 2 Jun 2021 03:40:08 -0700 Subject: [PATCH] mount: skip persisting metadata if file is open --- weed/filesys/file.go | 20 ++++++++++++++++---- 1 file 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 }) }