Project

General

Profile

Bug #16235

Disabling journaling with in-progress image sync can result in crash

Added by Jason Dillaman almost 8 years ago. Updated almost 8 years ago.

Status:
Resolved
Priority:
High
Assignee:
-
Target version:
-
% Done:

0%

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

Description

The ImageCtx::snap_lock is held within `update_features` and the sync point snapshot removal attempts to recursively lock it.

#6  0x00007f45e3c85d87 in ceph::__ceph_assert_fail (assertion=<optimized out>, file=<optimized out>, line=101, 
    func=0x7f45e3f3e6b0 <RWLock::get_read() const::__PRETTY_FUNCTION__> "void RWLock::get_read() const") at common/assert.cc:78
#7  0x00007f45e3a7b282 in RWLock::get_read (this=0x7f45f70dfad0) at common/RWLock.h:101
#8  0x00007f45e3b0623a in librbd::Operations<librbd::ImageCtx>::snap_remove (this=this@entry=0x7f45f70db350, 
    snap_name=snap_name@entry=0x7f45f70e7298 ".rbd-mirror.3e563921-8f1c-45bd-bcd9-7fb0b4bfdc9a.21c08c2c-b5db-4bdd-b4a9-488c2c60c4e4", 
    on_finish=on_finish@entry=0x7ffff73ca7b0) at librbd/Operations.cc:740
#9  0x00007f45e3b06809 in librbd::Operations<librbd::ImageCtx>::snap_remove (this=0x7f45f70db350, 
    snap_name=0x7f45f70e7298 ".rbd-mirror.3e563921-8f1c-45bd-bcd9-7fb0b4bfdc9a.21c08c2c-b5db-4bdd-b4a9-488c2c60c4e4")
    at librbd/Operations.cc:718
#10 0x00007f45e3ac671e in librbd::(anonymous namespace)::mirror_image_disable_internal (ictx=ictx@entry=0x7f45f70df820, 
    force=force@entry=false, remove=remove@entry=true) at librbd/internal.cc:378
#11 0x00007f45e3ad7012 in librbd::update_features (ictx=ictx@entry=0x7f45f70df820, features=features@entry=64, enabled=enabled@entry=false)
    at librbd/internal.cc:1794
#12 0x00007f45e3a5bf8d in librbd::Image::update_features (this=this@entry=0x7ffff73cb260, features=64, enabled=enabled@entry=false)
    at librbd/librbd.cc:640
#13 0x00007f45ed6ce667 in rbd::action::feature::execute (vm=..., enabled=<optimized out>) at tools/rbd/action/Feature.cc:81
#14 0x00007f45ed6acd0d in rbd::Shell::execute (this=this@entry=0x7ffff73cb7bf, 
    cmdline_arguments=std::vector of length 6, capacity 8 = {...}) at tools/rbd/Shell.cc:163
#15 0x00007f45ed67c012 in main (argc=<optimized out>, argv=<optimized out>) at tools/rbd/rbd.cc:19

Related issues

Copied to rbd - Backport #16246: jewel: Disabling journaling with in-progress image sync can result in crash Resolved

History

#1 Updated by Jason Dillaman almost 8 years ago

  • Priority changed from Normal to High

#2 Updated by Jason Dillaman almost 8 years ago

  • Status changed from New to In Progress
  • Backport set to jewel

#3 Updated by Jason Dillaman almost 8 years ago

  • Status changed from In Progress to Fix Under Review

#4 Updated by Mykola Golub almost 8 years ago

  • Status changed from Fix Under Review to Pending Backport

#5 Updated by Jason Dillaman almost 8 years ago

  • Copied to Backport #16246: jewel: Disabling journaling with in-progress image sync can result in crash added

#6 Updated by Jason Dillaman almost 8 years ago

  • Status changed from Pending Backport to Fix Under Review

With the fix the rbd CLI doesn't crash -- but now it deadlocks.

#7 Updated by Jason Dillaman almost 8 years ago

  • Status changed from Fix Under Review to In Progress

#8 Updated by Jason Dillaman almost 8 years ago

#9 Updated by Jason Dillaman almost 8 years ago

  • Status changed from In Progress to Fix Under Review

#10 Updated by Mykola Golub almost 8 years ago

  • Status changed from Fix Under Review to Pending Backport

#11 Updated by Jason Dillaman almost 8 years ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF