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(-) -- 2.20.1