Actions
Bug #3858
closedosd_client: ceph_osdc_wait_request() seems wrong
% Done:
0%
Source:
Development
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
The only error wait_for_completion_interruptible() will
return is ERESTARTSYS. So if that gets returned inside
ceph_osdc_wait_request() it indicates something got
interrupted (not "canceled/timed out").
If such an error occurs, the code cancels, unregisters,
and completes the request. I don't think that makes
sense. The caller, which has set up the request, should
be responsible for cleaning up that stuff if the wait
returns an error.
As it stands, in the rbd code the caller puts the request
reference it has (from having allocated it), and I suspect
this is an extra reference drop.
It was too much to just fix on the fly, so I'm documenting
it here.
Actions