Project

General

Profile

Backport #17695

Updated by Loïc Dachary over 7 years ago

https://github.com/ceph/ceph/pull/11644 

 With the journaling feature enabled, issuing a discard after a write to overlapping extents will result in an assertion failure: 

 <pre> 
 librbd/LibrbdWriteback.cc: In function 'virtual void librbd::LibrbdWriteback::overwrite_extent(const object_t&, uint64_t, uint64_t, ceph_tid_t, ceph_tid_t)' thread 7f3f65a18700 time 2016-10-25 09:42:07.681147 
 librbd/LibrbdWriteback.cc: 295: FAILED assert(m_ictx->owner_lock.is_locked()) 
  ceph version 10.2.3-304-g3ccc17b (3ccc17b81d2794406d803ff4210e930a1fa67455) 
  1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x8b) [0x7f3f7a00063b] 
  2: (librbd::LibrbdWriteback::overwrite_extent(object_t const&, unsigned long, unsigned long, unsigned long, unsigned long)+0x33d) [0x7f3f79ec669d] 
  3: (ObjectCacher::Object::replace_journal_tid(ObjectCacher::BufferHead*, unsigned long)+0x9b) [0x7f3f79f81cdb] 
  4: (ObjectCacher::Object::discard(long, long)+0x174) [0x7f3f79f8b7f4] 
  5: (ObjectCacher::discard_set(ObjectCacher::ObjectSet*, std::vector<ObjectExtent, std::allocator<ObjectExtent> > const&)+0x166) [0x7f3f79f8be96] 
  6: (()+0x75804d) [0x7f3f79e6804d] 
  7: (Context::complete(int)+0x9) [0x7f3f79b78549] 
  8: (ContextWQ::process(Context*)+0xe4) [0x7f3f79c0b454] 
  9: (ThreadPool::worker(ThreadPool::WorkThread*)+0xa5e) [0x7f3f79ff197e] 
  10: (ThreadPool::WorkThread::entry()+0x10) [0x7f3f79ff2850] 
  11: (()+0x7dc5) [0x7f3f6edecdc5] 
  12: (clone()+0x6d) [0x7f3f6dedaced] 
 </pre> 

 Note: this issue only affects the jewel branch.

Back