On 7/24/19 8:56 PM, Jeff Layton wrote:
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?
add it later
Regards
Yan, Zheng
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(-)