[00/16] ceph: addr2, btime and change_attr support
mbox series

Message ID 20190607153816.12918-1-jlayton@kernel.org
Headers show
Series
  • ceph: addr2, btime and change_attr support
Related show

Message

Jeff Layton June 7, 2019, 3:38 p.m. UTC
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