Bug #14030
closed
rbd merge-diff doesn't properly handle >2GB diffs
Added by Jason Dillaman over 8 years ago.
Updated about 8 years ago.
Backport:
hammer,infernalis
Description
It is using lseek instead of lseek64 -- resulting in an overflow.
lseek(4, 4096, SEEK_CUR) = 2147504762
write(2, "rbd: failed to skip first diff d"..., 35rbd: failed to skip first diff data) = 35
- Description updated (diff)
- Backport set to hammer,infernalis
- Subject changed from rbd merge-diff doesn't properly handle >2GB images to rbd merge-diff doesn't properly handle >2GB diffs
It only seeks to skip parts of the first diff that were overwritten, so a workaround would be to pass the first diff via stdin, i.e.
cat snap1.diff | rbd merge-diff - snap2.diff combined.diff
- Status changed from New to Pending Backport
- Copied to Backport #14062: infernalis: rbd merge-diff doesn't properly handle >2GB diffs added
- Copied to Backport #14063: hammer: rbd merge-diff doesn't properly handle >2GB diffs added
src/tools/rbd/action/MergeDiff.cc doesn't exist for hammer and infernalis. This may require backporting fa4e00f8c85603ed202bfef2f3be6086482fbbb2 and c7f71d14a5d31d14f3556a1f1f2a991b5ea0a75d too. Please confirm.
No other backports are needed for this - the same change should just be applied to src/rbd.cc in infernalis and hammer. If you like Jason or I can do it. This will be a common issue with rbd backports to infernalis and hammer since there's been a lot of refactoring recently.
- Status changed from Pending Backport to Resolved
Also available in: Atom
PDF