CEPH_FEATURE_MSG_ADDR2 was added to the userland code a couple of years ago, but the kclient never got support for it. While addr2 doesn't add a lot of new functionality, it is a prerequisite for msgr2 support, which we will eventually need, and the feature bit is shared with CEPH_FEATURE_FS_BTIME and CEPH_FEATURE_FS_CHANGE_ATTR. This set adds support for all of three features (necessary since the bit is shared). I've also added support for querying birthtime via statx(). I was able to do a cephfs mount and ran xfstests on it, but some of the more obscure messages haven't yet been tested. Birthtime support works as expected, but I don't have a great way to test the change attribute. We don't set SB_I_VERSION, so none of the internal kernel users will rely on it, and that value is not exposed to userspace via statx (yet). Given that, we could leave off the last 4 patches for now. Jeff Layton (16): libceph: fix sa_family just after reading address libceph: add ceph_decode_entity_addr libceph: ADDR2 support for monmap libceph: switch osdmap decoding to use ceph_decode_entity_addr libceph: fix watch_item_t decoding to use ceph_decode_entity_addr libceph: correctly decode ADDR2 addresses in incremental OSD maps ceph: have MDS map decoding use entity_addr_t decoder ceph: fix decode_locker to use ceph_decode_entity_addr ceph: add btime field to ceph_inode_info ceph: handle btime in cap messages libceph: turn on CEPH_FEATURE_MSG_ADDR2 ceph: allow querying of STATX_BTIME in ceph_getattr iversion: add a routine to update a raw value with a larger one ceph: add change_attr field to ceph_inode_info ceph: handle change_attr in cap messages ceph: increment change_attribute on local changes fs/ceph/addr.c | 2 + fs/ceph/caps.c | 37 +++++++++------ fs/ceph/file.c | 5 ++ fs/ceph/inode.c | 23 +++++++-- fs/ceph/mds_client.c | 21 +++++---- fs/ceph/mds_client.h | 2 + fs/ceph/mdsmap.c | 12 +++-- fs/ceph/snap.c | 3 ++ fs/ceph/super.h | 4 +- include/linux/ceph/ceph_features.h | 1 + include/linux/ceph/decode.h | 2 + include/linux/ceph/mon_client.h | 1 - include/linux/iversion.h | 24 ++++++++++ net/ceph/Makefile | 2 +- net/ceph/cls_lock_client.c | 7 ++- net/ceph/decode.c | 75 ++++++++++++++++++++++++++++++ net/ceph/messenger.c | 5 +- net/ceph/mon_client.c | 21 +++++---- net/ceph/osd_client.c | 20 +++++--- net/ceph/osdmap.c | 31 ++++++------ 20 files changed, 232 insertions(+), 66 deletions(-) create mode 100644 net/ceph/decode.c -- 2.21.0