Project

General

Profile

Bug #12885

rbd export-diff crashes in librbd::simple_diff_cb

Added by Thorvald Natvig over 7 years ago. Updated about 7 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Jason Dillaman
Target version:
-
% Done:

0%

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

Description

When doing rbd export-diff, I get a crash. Most other images on the same cluster work fine.

rbd info AlignNav-db::

rbd image 'AlignNav-db':
size 11100 MB in 2775 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.6bb2042eb141f2
format: 2
features: layering
flags:
parent:
overlap: 11100 MB

rbd export-diff AlignNav-db fil::

librbd/internal.cc: In function 'int librbd::simple_diff_cb(uint64_t, size_t, int, void*)' thread 7f7539f20840 time 2015-08-31 10:48:36.797179
librbd/internal.cc: 2815: FAILED assert(exists)

(full log attached)

This is the 0.94.3-1trusty release.

rbd.export-diff.crash.txt View (41.9 KB) Thorvald Natvig, 08/31/2015 06:45 PM

client.admin.21649.log.gz (73.3 KB) Thorvald Natvig, 09/08/2015 05:40 PM


Related issues

Copied to rbd - Backport #13045: rbd export-diff crashes in librbd::simple_diff_cb Resolved

Associated revisions

Revision 3ccc3bb4 (diff)
Added by Jason Dillaman about 7 years ago

librbd: diff_iterate needs to handle holes in parent images

If a clone's parent image snapshot includes a discarded extent,
this was previously causing an assert failure. Instead, ignore
any discard holes in the parent image.

Fixes: #12885
Backport: hammer
Signed-off-by: Jason Dillaman <>

Revision 93c523c6 (diff)
Added by Jason Dillaman about 7 years ago

librbd: diff_iterate needs to handle holes in parent images

If a clone's parent image snapshot includes a discarded extent,
this was previously causing an assert failure. Instead, ignore
any discard holes in the parent image.

Fixes: #12885
Backport: hammer
Signed-off-by: Jason Dillaman <>
(cherry picked from commit 3ccc3bb4bd35e57209852d460633e371b4d004e2)

Conflicts:
src/librbd/DiffIterate.cc : file doesn't exist in hammer, logic is in internal.cc

History

#1 Updated by Loïc Dachary about 7 years ago

  • Project changed from Ceph to rbd

#2 Updated by Jason Dillaman about 7 years ago

  • Status changed from New to Need More Info

Can you please add the following to your ceph.conf, re-run the failed 'rbd export-diff', and attach the resulting log? I have a theory as to the cause but I will need the logs to verify. Thanks.

ceph.conf

[client]
debug rados = 20
debug rbd = 20
log file = /path/to/log/file/$name.$pid.log

#3 Updated by Thorvald Natvig about 7 years ago

Here you go. Had to compress it to avoid "request entity too large".

#4 Updated by Jason Dillaman about 7 years ago

  • Status changed from Need More Info to In Progress
  • Assignee set to Jason Dillaman
  • Source changed from other to Community (user)

Thanks for the prompt reply, your logs confirmed my suspicion. For a short-term workaround until the fix propagates down to Hammer, you should create a snapshot on AlignNav-db, run a regular 'rbd export AlignNav-db@<base snap>', then you should be able to run 'rbd export diff --from-snap AlignNav-db@<base snap> AlignNav-db@<incremental snap>' to acquire your incremental diffs.

#5 Updated by Jason Dillaman about 7 years ago

#6 Updated by Jason Dillaman about 7 years ago

  • Status changed from In Progress to Fix Under Review

#7 Updated by Jason Dillaman about 7 years ago

  • Backport set to hammer

#8 Updated by Jason Dillaman about 7 years ago

  • Status changed from Fix Under Review to Pending Backport

#9 Updated by Jason Dillaman about 7 years ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF