aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2019-06-26 00:03:37 +0000
committerAlan Somers <asomers@FreeBSD.org>2019-06-26 00:03:37 +0000
commit0a8fe2d3697ef841ccfd03f0a1f66e6d5abe77ad (patch)
tree5006206bc8dc745c71699b62ea3ecfdb90618dd2
parent788af9538ac14c408e096e3dd8f531fb66d8a798 (diff)
Notes
-rw-r--r--sys/fs/fuse/fuse_internal.c5
-rw-r--r--tests/sys/fs/fusefs/write.cc3
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c
index 933bc7aa65c4c..5df6e18444ca3 100644
--- a/sys/fs/fuse/fuse_internal.c
+++ b/sys/fs/fuse/fuse_internal.c
@@ -1074,6 +1074,11 @@ int fuse_internal_setattr(struct vnode *vp, struct vattr *vap,
fsai->mtimensec = fvdat->cached_attrs.va_mtime.tv_nsec;
fsai->valid |= FATTR_MTIME;
}
+ if (fuse_libabi_geq(data, 7, 23) && fvdat->flag & FN_CTIMECHANGE) {
+ fsai->ctime = fvdat->cached_attrs.va_ctime.tv_sec;
+ fsai->ctimensec = fvdat->cached_attrs.va_ctime.tv_nsec;
+ fsai->valid |= FATTR_CTIME;
+ }
if (vap->va_mode != (mode_t)VNOVAL) {
fsai->mode = vap->va_mode & ALLPERMS;
fsai->valid |= FATTR_MODE;
diff --git a/tests/sys/fs/fusefs/write.cc b/tests/sys/fs/fusefs/write.cc
index 3dd6e1cf39919..147027d1b0ae7 100644
--- a/tests/sys/fs/fusefs/write.cc
+++ b/tests/sys/fs/fusefs/write.cc
@@ -1117,8 +1117,7 @@ TEST_F(WriteBackAsync, timestamps_during_setattr)
expect_open(ino, 0, 1);
EXPECT_CALL(*m_mock, process(
ResultOf([=](auto in) {
- /* In protocol 7.23, ctime will be changed too */
- uint32_t valid = FATTR_MODE | FATTR_MTIME;
+ uint32_t valid = FATTR_MODE | FATTR_MTIME | FATTR_CTIME;
return (in.header.opcode == FUSE_SETATTR &&
in.header.nodeid == ino &&
in.body.setattr.valid == valid);