Project

General

Profile

Bug #3743

krbd: errors on submitted requests are ignored

Added by Alex Elder about 11 years ago. Updated about 11 years ago.

Status:
Won't Fix
Priority:
Normal
Assignee:
Target version:
-
% Done:

0%

Source:
Development
Tags:
Backport:
Regression:
No
Severity:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

When a Linux request comes down to the rbd driver via rbd_rq_fn(),
rbd_dev_do_request() is called after validating the request and
getting a few references.

rbd_dev_do_request() splits the request if necessary across
the osd object(s) that back the portion of the rbd image
spanned by the request.

For each of these, a bio clone is created. If creating that
clone fails, that particular segment of the original request
is ended early (cleaning up, etc.).

Otherwise rbd_do_op() is called. But the return value of
rbd_do_op() is ignored.

There are a couple cases in rbd_do_op() where an error is
returned but no cleanup occurs, which is a problem.

We have been getting away with this because this stuff
almost never fails, but if the system enters a low memory
situation I think this will leave an I/O request hanging.

I am going to fix this in my new request management code
(http://tracker.newdream.net/issues/3741) but the problem
exists in the current code as well.

I'm not sure how important it is to fix the old code, but
if it needs fixing I'd rather fix the old code first.

History

#1 Updated by Alex Elder about 11 years ago

If I could figure out how, I'd change the title of this
to say "krbd" rather than "rbd" to help make it clear
which body of code it affects.

#2 Updated by Ian Colle about 11 years ago

  • Subject changed from rbd: errors on submitted requests are ignored to krbd: errors on submitted requests are ignored

#3 Updated by Ian Colle about 11 years ago

  • Status changed from New to Won't Fix

This was found in old request code and therefore will not be fixed.

Also available in: Atom PDF