diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2016-08-12 16:11:41 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2016-08-24 23:49:16 +0200 |
commit | 99d1694310df3ffef66902f5bc1a23e95a724aa3 (patch) | |
tree | b6b5aa340ac11b63d07c5022c69a1d1be4a0edea /net/ceph/osd_client.c | |
parent | rbd: introduce a per-device ordered workqueue (diff) | |
download | linux-99d1694310df3ffef66902f5bc1a23e95a724aa3.tar.xz linux-99d1694310df3ffef66902f5bc1a23e95a724aa3.zip |
rbd: retry watch re-registration periodically
Revamp watch code to support retrying watch re-registration:
- add rbd_dev->watch_state for more robust errcb handling
- store watch cookie separately to avoid dereferencing watch_handle
which is set to NULL on unwatch
- move re-register code into a delayed work and retry re-registration
every second, unless the client is blacklisted
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Mike Christie <mchristi@redhat.com>
Tested-by: Mike Christie <mchristi@redhat.com>
Diffstat (limited to 'net/ceph/osd_client.c')
-rw-r--r-- | net/ceph/osd_client.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index fbc6b7090c65..d9bf7a1d0a58 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c @@ -4014,6 +4014,7 @@ EXPORT_SYMBOL(ceph_osdc_list_watchers); */ void ceph_osdc_flush_notifies(struct ceph_osd_client *osdc) { + dout("%s osdc %p\n", __func__, osdc); flush_workqueue(osdc->notify_wq); } EXPORT_SYMBOL(ceph_osdc_flush_notifies); |