From d40de39e7556d0301d4e3326e7b09d08b18ff9af Mon Sep 17 00:00:00 2001
From: Chris Lu <chris.lu@gmail.com>
Date: Fri, 24 Jul 2020 10:13:45 -0700
Subject: [PATCH] FUSE: do not change crtime, uid, gid on save

---
 weed/filesys/filehandle.go | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index 21f86f6b5..ca35bfd02 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -191,14 +191,16 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error {
 
 		if fh.f.entry.Attributes != nil {
 			fh.f.entry.Attributes.Mime = fh.contentType
-			if req.Uid != 0 {
+			if fh.f.entry.Attributes.Uid == 0 {
 				fh.f.entry.Attributes.Uid = req.Uid
 			}
-			if req.Gid != 0 {
+			if fh.f.entry.Attributes.Gid == 0 {
 				fh.f.entry.Attributes.Gid = req.Gid
 			}
+			if fh.f.entry.Attributes.Crtime == 0 {
+				fh.f.entry.Attributes.Crtime = time.Now().Unix()
+			}
 			fh.f.entry.Attributes.Mtime = time.Now().Unix()
-			fh.f.entry.Attributes.Crtime = time.Now().Unix()
 			fh.f.entry.Attributes.FileMode = uint32(os.FileMode(fh.f.entry.Attributes.FileMode) &^ fh.f.wfs.option.Umask)
 			fh.f.entry.Attributes.Collection = fh.dirtyPages.collection
 			fh.f.entry.Attributes.Replication = fh.dirtyPages.replication