]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd/ReplicatedBackend: add sanity check during build_push_op() 9491/head
authorYan Jun <yan.jun8@zte.com.cn>
Fri, 3 Jun 2016 12:18:00 +0000 (20:18 +0800)
committerYan Jun <yan.jun8@zte.com.cn>
Tue, 14 Jun 2016 03:00:10 +0000 (11:00 +0800)
commit83e0944750650207ab8054bdb8a466aa04eeb294
treec7f7fdd364fac94893595a07bd90223df13d5a16
parent197849cd9d34ab1ef25438699daa6b7ccf4158f8
osd/ReplicatedBackend: add sanity check during build_push_op()

The caller may or may not tolerate build_push_op() to return a
negative result, and we shall honour the truth that it is up
to him, not us.

Also this can silent the noise from the lower level API such as
buffer, which is less clear and can be rather confusing sometimes:

1: /usr/bin/ceph-osd() [0xada722]
2: (()+0xf100) [0x7f9889f22100]
3: (gsignal()+0x37) [0x7f988893b5f7]
4: (abort()+0x148) [0x7f988893cce8]
5: (__gnu_cxx::__verbose_terminate_handler()+0x165) [0x7f988923f9d5]
6: (()+0x5e946) [0x7f988923d946]
7: (()+0x5e973) [0x7f988923d973]
8: (()+0x5eb93) [0x7f988923db93]
9: (ceph::buffer::list::iterator::copy(unsigned int, char*)+0x137) [0xc51707]
10: (object_info_t::decode(ceph::buffer::list::iterator&)+0x7e) [0x7a236e]
11: (ReplicatedBackend::build_push_op(ObjectRecoveryInfo const&, ObjectRecoveryProgress const&, ObjectRecoveryProgress*, PushOp*, object_stat_sum_t*)+0x8dc) [0xa16c0c]
12: (ReplicatedBackend::prep_push(std::tr1::shared_ptr<ObjectContext>, hobject_t const&, pg_shard_t, eversion_t, interval_set<unsigned long>&, std::map<hobject_t, interval_set<unsigned long>, std::less<hobject_t>, std::allocator<std::pair<hobject_t const, interval_set<unsigned long> > > >&, PushOp*)+0x424) [0xa17e94]
13: (ReplicatedBackend::prep_push_to_replica(std::tr1::shared_ptr<ObjectContext>, hobject_t const&, pg_shard_t, PushOp*)+0x196) [0xa1eff6]
14: (ReplicatedBackend::start_pushes(hobject_t const&, std::tr1::shared_ptr<ObjectContext>, ReplicatedBackend::RPGHandle*)+0x1cd) [0xa1fcad]
15: (C_ReplicatedBackend_OnPullComplete::finish(ThreadPool::TPHandle&)+0x153) [0xa32173]
16: (GenContext<ThreadPool::TPHandle&>::complete(ThreadPool::TPHandle&)+0x9) [0x6c5ea9]
17: (ReplicatedPG::BlessedGenContext<ThreadPool::TPHandle&>::finish(ThreadPool::TPHandle&)+0x95) [0x8acbe5]
18: (GenContext<ThreadPool::TPHandle&>::complete(ThreadPool::TPHandle&)+0x9) [0x6c5ea9]
19: (ThreadPool::WorkQueueVal<GenContext<ThreadPool::TPHandle&>*, GenContext<ThreadPool::TPHandle&>*>::_void_process(void*, ThreadPool::TPHandle&)+0x62) [0x6c7f22]
20: (ThreadPool::worker(ThreadPool::WorkThread*)+0xa76) [0xbce296]
21: (ThreadPool::WorkThread::entry()+0x10) [0xbcf320]
22: (()+0x7dc5) [0x7f9889f1adc5]
23: (clone()+0x6d) [0x7f98889fc21d]

Signed-off-by: Yan Jun <yan.jun8@zte.com.cn>
src/osd/ReplicatedBackend.cc