]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: ensure that we send the btime in cap messages 45164/head
authorJeff Layton <jlayton@redhat.com>
Tue, 10 Aug 2021 14:51:34 +0000 (10:51 -0400)
committerDan van der Ster <daniel.vanderster@cern.ch>
Fri, 25 Feb 2022 08:29:26 +0000 (09:29 +0100)
While troubleshooting a different problem, I noticed that the kclient
would occasionally not report the btime in statx calls. It's most
evident in the case where two different clients are alternately writing
to the same file, and another task on one of them is repeatedly issuing
statx() calls against it.

The problem is that we're not correctly populating the MClientCaps btime
field when issuing caps, and that causes the MDS to incorrectly send a
zeroed-out btime field.

Fixes: https://tracker.ceph.com/issues/52123
Signed-off-by: Jeff Layton <jlayton@redhat.com>
(cherry picked from commit 9c33a590466f7c553ea6bc62e90dc67728fa1e26)

src/mds/CInode.cc

index 3c1ca791c60ae88df571c6b83cfd9f5a530c240b..8ca8a22fa3f6625bf09c22c0f0181e09a5589125 100644 (file)
@@ -4052,6 +4052,7 @@ void CInode::encode_cap_message(const ref_t<MClientCaps> &m, Capability *cap)
   m->mtime = i->mtime;
   m->atime = i->atime;
   m->ctime = i->ctime;
+  m->btime = i->btime;
   m->change_attr = i->change_attr;
   m->time_warp_seq = i->time_warp_seq;
   m->nfiles = i->dirstat.nfiles;