Project

General

Profile

Actions

Bug #3858

closed

osd_client: ceph_osdc_wait_request() seems wrong

Added by Alex Elder over 11 years ago. Updated almost 11 years ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
% 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

Also available in: Atom PDF