Commit e6e2843
committed
libceph: fix potential hang in ceph_osdc_notify()
If the cluster becomes unavailable, ceph_osdc_notify() may hang even
with osd_request_timeout option set because linger_notify_finish_wait()
waits for MWatchNotify NOTIFY_COMPLETE message with no associated OSD
request in flight -- it's completely asynchronous.
Introduce an additional timeout, derived from the specified notify
timeout. While at it, switch both waits to killable which is more
correct.
Cc: stable@vger.kernel.org
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
Reviewed-by: Xiubo Li <xiubli@redhat.com>1 parent 9d01e07 commit e6e2843
1 file changed
Lines changed: 14 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3334 | 3334 | | |
3335 | 3335 | | |
3336 | 3336 | | |
3337 | | - | |
| 3337 | + | |
3338 | 3338 | | |
3339 | 3339 | | |
3340 | 3340 | | |
3341 | | - | |
| 3341 | + | |
| 3342 | + | |
3342 | 3343 | | |
3343 | | - | |
| 3344 | + | |
3344 | 3345 | | |
3345 | 3346 | | |
3346 | | - | |
3347 | | - | |
| 3347 | + | |
| 3348 | + | |
| 3349 | + | |
| 3350 | + | |
| 3351 | + | |
| 3352 | + | |
| 3353 | + | |
| 3354 | + | |
3348 | 3355 | | |
3349 | 3356 | | |
3350 | 3357 | | |
| |||
4896 | 4903 | | |
4897 | 4904 | | |
4898 | 4905 | | |
4899 | | - | |
| 4906 | + | |
| 4907 | + | |
4900 | 4908 | | |
4901 | 4909 | | |
4902 | 4910 | | |
| |||
0 commit comments