From b6dfb75cc95206f74d487c03a1df577c74b9d647 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 13 Nov 2026 01:46:13 -0800 Subject: [PATCH] mount: keep a link change's ctime in the dirty entry The flush does not restamp times, so a dirty entry carrying an earlier write's ctime moved the filer's ctime back from the link or unlink. Co-Authored-By: Claude Opus 5.5 --- weed/mount/weedfs_link.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/weed/mount/weedfs_link.go b/weed/mount/weedfs_link.go index 28c0ab3a77..49c8053be1 100644 --- a/weed/mount/weedfs_link.go +++ b/weed/mount/weedfs_link.go @@ -255,6 +255,9 @@ func (fh *FileHandle) adoptLinkChangeLocked(stored *filer_pb.Entry, versionTsNs fh.UpdateEntry(func(entry *filer_pb.Entry) { entry.Name = linked.Name entry.HardLinkId, entry.HardLinkCounter = linked.HardLinkId, linked.HardLinkCounter + if a, b := entry.Attributes, linked.Attributes; a != nil && b != nil && (b.Ctime > a.Ctime || b.Ctime == a.Ctime && b.CtimeNs > a.CtimeNs) { + a.Ctime, a.CtimeNs = b.Ctime, b.CtimeNs + } }) } else { fh.SetEntry(proto.Clone(linked).(*filer_pb.Entry))