On Wed, 2019-07-24 at 20:21 +0800, Yan, Zheng wrote: > 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 > I've looked over the set and I think this looks reasonable modulo a few small nits that can be cleaned up during or after merging. I don't see the knob that forces a reconnect in this set any longer. Did you decide that that wasn't needed or are you planning to add it in a later set? > 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(-) > -- Jeff Layton <jlayton@xxxxxxxxxx>