ceph: reencode gid_list when reconnecting
authorIlya Dryomov <idryomov@gmail.com>
Wed, 16 Dec 2020 16:19:58 +0000 (17:19 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 28 Dec 2020 19:34:32 +0000 (20:34 +0100)
commit60267ba35c744d851dcd2d22ebaa240ca6aaa15f
treeb8928d1304fa0891e47476c126ecddfa70a93e1b
parent5c8fe583cce542aa0b84adc939ce85293de36e5e
ceph: reencode gid_list when reconnecting

On reconnect, cap and dentry releases are dropped and the fields
that follow must be reencoded into the freed space.  Currently these
are timestamp and gid_list, but gid_list isn't reencoded.  This
results in

  failed to decode message of type 24 v4: End of buffer

errors on the MDS.

While at it, make a change to encode gid_list unconditionally,
without regard to what head/which version was used as a result
of checking whether CEPH_FEATURE_FS_BTIME is supported or not.

URL: https://tracker.ceph.com/issues/48618
Fixes: 4f1ddb1ea874 ("ceph: implement updated ceph_mds_request_head structure")
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
fs/ceph/mds_client.c