[0/9,v3] ceph: auto reconnect after blacklisted
mbox series

Message ID 20190725121647.17093-1-zyan@redhat.com
Headers show
Series
  • ceph: auto reconnect after blacklisted
Related show

Message

Yan, Zheng July 25, 2019, 12:16 p.m. UTC
This series add support for auto reconnect after blacklisted.

Auto reconnect is controlled by recover_session=<clean|no> mount option.
So far only clean mode is supported and it is the default mode. In this
mode, client drops any dirty data/metadata, invalidates page caches and
invalidates all writable file handles. After reconnect, file locks become
stale because MDS lose track of them. If an inode contains any stale file
lock, read/write on the indoe are not allowed until all stale file locks
are released by applications.

v2: remove force_remount mount option
    no enabled auto reconnect by default
    remove unfinished recover_session=brute code
v3: fix the way to update le32 msgr->inst.addr.nonce
    change fsc->blacklisted to bool
    update doc for recover_session mount option
    clear fsc->blacklisted after reconnect

Yan, Zheng (9):
  libceph: add function that reset client's entity addr
  libceph: add function that clears osd client's abort_err
  ceph: allow closing session in restarting/reconnect state
  ceph: track and report error of async metadata operation
  ceph: pass filp to ceph_get_caps()
  ceph: add helper function that forcibly reconnects to ceph cluster.
  ceph: return -EIO if read/write against filp that lost file locks
  ceph: invalidate all write mode filp after reconnect
  ceph: auto reconnect after blacklisted

 Documentation/filesystems/ceph.txt | 10 ++++
 fs/ceph/addr.c                     | 37 ++++++++----
 fs/ceph/caps.c                     | 93 +++++++++++++++++++++---------
 fs/ceph/file.c                     | 50 +++++++++-------
 fs/ceph/inode.c                    |  2 +
 fs/ceph/locks.c                    |  8 ++-
 fs/ceph/mds_client.c               | 89 ++++++++++++++++++++++------
 fs/ceph/mds_client.h               |  6 +-
 fs/ceph/super.c                    | 45 ++++++++++++++-
 fs/ceph/super.h                    | 21 +++++--
 include/linux/ceph/libceph.h       |  1 +
 include/linux/ceph/messenger.h     |  1 +
 include/linux/ceph/mon_client.h    |  1 +
 include/linux/ceph/osd_client.h    |  2 +
 net/ceph/ceph_common.c             |  8 +++
 net/ceph/messenger.c               |  5 ++
 net/ceph/mon_client.c              |  7 +++
 net/ceph/osd_client.c              | 24 ++++++++
 18 files changed, 324 insertions(+), 86 deletions(-)