Project

General

Profile

Bug #7624

osd/ECBackend.cc: 1644: FAILED assert(r == 0)

Added by Samuel Just about 10 years ago. Updated about 10 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
-
Target version:
-
% Done:

0%

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

Description

Reading from clone needs to require readable on the clone.

ceph version 0.77-729-gd9e8806 (d9e8806308dcd6e52c690770340af58aa0b36612)
1: (ECBackend::objects_read_async(hobject_t const&, std::list<std::pair<std::pair<unsigned long, unsigned long>, std::pair<ceph::buffer::list*, Context*> >, std::allocator<std::pair<std::pair<unsigned long, unsigned long>, std::pair<ceph::buffer::list*, Context*> > > > const&, Context*)+0x841) [0x962041]
2: (ReplicatedPG::OpContext::start_async_reads(ReplicatedPG*)+0x6f) [0x85674f]
3: (ReplicatedPG::execute_ctx(ReplicatedPG::OpContext*)+0x17f6) [0x8afa66]
4: (ReplicatedPG::do_op(std::tr1::shared_ptr<OpRequest>)+0x23bc) [0x8b7f1c]
5: (ReplicatedPG::do_request(std::tr1::shared_ptr<OpRequest>, ThreadPool::TPHandle&)+0x692) [0x85aad2]
6: (OSD::dequeue_op(boost::intrusive_ptr<PG>, std::tr1::shared_ptr<OpRequest>, ThreadPool::TPHandle&)+0x34a) [0x61b8aa]
7: (OSD::OpWQ::_process(boost::intrusive_ptr<PG>, ThreadPool::TPHandle&)+0x4a0) [0x636730]
8: (ThreadPool::WorkQueueVal<std::pair<boost::intrusive_ptr<PG>, std::tr1::shared_ptr<OpRequest> >, boost::intrusive_ptr<PG> >::_void_process(void*, ThreadPool::TPHandle&)+0x9c) [0x67be2c]
9: (ThreadPool::worker(ThreadPool::WorkThread*)+0x4e6) [0xa521a6]
10: (ThreadPool::WorkThread::entry()+0x10) [0xa53fb0]
11: (()+0x7e9a) [0x7fccceb3fe9a]
12: (clone()+0x6d) [0x7fcccd3043fd]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

Associated revisions

Revision bafd76ad (diff)
Added by Samuel Just about 10 years ago

ReplicatedPG: ensure clones are readable after find_object_context

We only get EAGAIN if the object is missing. We also need the
clone to be readable if we are reading it.

The other find_object_context callers already require !degraded.

Fixes: #7624
Signed-off-by: Samuel Just <>

History

#1 Updated by Sage Weil about 10 years ago

  • Status changed from 7 to Resolved

Also available in: Atom PDF