Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osd: EC read handling: don't grab an objectstore error to use as the … #16663

Merged
merged 1 commit into from
Aug 1, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions src/osd/ECBackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1217,13 +1217,11 @@ void ECBackend::handle_sub_read_reply(
}
// Couldn't read any additional shards so handle as completed with errors
}
if (rop.complete[iter->first].errors.empty()) {
dout(20) << __func__ << " simply not enough copies err=" << err << dendl;
} else {
// Grab the first error
err = rop.complete[iter->first].errors.begin()->second;
dout(20) << __func__ << ": Use one of the shard errors err=" << err << dendl;
}
// We don't want to confuse clients / RBD with objectstore error
// values in particular ENOENT. We may have different error returns
// from different shards, so we'll return minimum_to_decode() error
// (usually EIO) to reader. It is likely an error here is due to a
// damaged pg.
rop.complete[iter->first].r = err;
++is_complete;
}
Expand Down