diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go index 7701e7de9..79981259f 100644 --- a/weed/filesys/dir.go +++ b/weed/filesys/dir.go @@ -66,7 +66,7 @@ func (dir *Dir) Attr(ctx context.Context, attr *fuse.Attr) error { attr.Mode = os.FileMode(entry.Attributes.FileMode) | os.ModeDir attr.Mtime = time.Unix(entry.Attributes.Mtime, 0) attr.Crtime = time.Unix(entry.Attributes.Crtime, 0) - attr.Ctime = time.Unix(entry.Attributes.Crtime, 0) + attr.Ctime = time.Unix(entry.Attributes.Mtime, 0) attr.Atime = time.Unix(entry.Attributes.Mtime, 0) attr.Gid = entry.Attributes.Gid attr.Uid = entry.Attributes.Uid @@ -515,6 +515,8 @@ func (dir *Dir) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fus entry.Attributes.Mtime = req.Mtime.Unix() } + entry.Attributes.Mtime = time.Now().Unix() + return dir.saveEntry(entry) } diff --git a/weed/filesys/file.go b/weed/filesys/file.go index 7b5b5a424..e971aa2e0 100644 --- a/weed/filesys/file.go +++ b/weed/filesys/file.go @@ -149,21 +149,25 @@ func (file *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *f if req.Valid.Mode() && entry.Attributes.FileMode != uint32(req.Mode) { entry.Attributes.FileMode = uint32(req.Mode) + entry.Attributes.Mtime = time.Now().Unix() file.dirtyMetadata = true } if req.Valid.Uid() && entry.Attributes.Uid != req.Uid { entry.Attributes.Uid = req.Uid + entry.Attributes.Mtime = time.Now().Unix() file.dirtyMetadata = true } if req.Valid.Gid() && entry.Attributes.Gid != req.Gid { entry.Attributes.Gid = req.Gid + entry.Attributes.Mtime = time.Now().Unix() file.dirtyMetadata = true } if req.Valid.Crtime() { entry.Attributes.Crtime = req.Crtime.Unix() + entry.Attributes.Mtime = time.Now().Unix() file.dirtyMetadata = true }