diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-04-08 21:42:16 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-04-08 21:42:16 +0000 |
commit | 9a8097c90f3d6e68b1964bbf4fbdf560faa85627 (patch) | |
tree | 49416fc18dbefe109f861b21f0949f4e5be6889a | |
parent | cb3fd1291b3773baa7038d92ddf15e9e6f363f7c (diff) | |
parent | 357f136e42de81b033b65b7f39a4a555275a17e3 (diff) |
Merge release-20200323.0-95-g357f136 (automated)
-rw-r--r-- | pkg/sentry/fs/gofer/util.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/pkg/sentry/fs/gofer/util.go b/pkg/sentry/fs/gofer/util.go index 2d8d3a2ea..47a6c69bf 100644 --- a/pkg/sentry/fs/gofer/util.go +++ b/pkg/sentry/fs/gofer/util.go @@ -20,17 +20,29 @@ import ( "gvisor.dev/gvisor/pkg/context" "gvisor.dev/gvisor/pkg/p9" "gvisor.dev/gvisor/pkg/sentry/fs" + ktime "gvisor.dev/gvisor/pkg/sentry/kernel/time" ) func utimes(ctx context.Context, file contextFile, ts fs.TimeSpec) error { if ts.ATimeOmit && ts.MTimeOmit { return nil } + + // Replace requests to use the "system time" with the current time to + // ensure that timestamps remain consistent with the remote + // filesystem. + now := ktime.NowFromContext(ctx) + if ts.ATimeSetSystemTime { + ts.ATime = now + } + if ts.MTimeSetSystemTime { + ts.MTime = now + } mask := p9.SetAttrMask{ ATime: !ts.ATimeOmit, - ATimeNotSystemTime: !ts.ATimeSetSystemTime, + ATimeNotSystemTime: true, MTime: !ts.MTimeOmit, - MTimeNotSystemTime: !ts.MTimeSetSystemTime, + MTimeNotSystemTime: true, } as, ans := ts.ATime.Unix() ms, mns := ts.MTime.Unix() |