Public bug reported: Hi Christian,
we have started testing jammy and triggered a qemu bug which has already been fixed upstream. The qemu 6.2 in jammy has currently a buggy implementation of .bdrv_co_block_status in block/rbd. This can result in data corruption and/or crash of the instance. https://tracker.ceph.com/issues/53784 Please consider backporting the following patches into qemu jammy before the release: https://git.qemu.org/?p=qemu.git;a=patch;h=9e302f64bb407a9bb097b626da97228c2654cfee https://git.qemu.org/?p=qemu.git;a=patch;h=fc176116cdea816ceb8dd969080b2b95f58edbc0 A repoducer is in the Ceph tracker. Trying to create a qcow2 snapshot from a running rbd-backed virtual machine will lead to a crash of the virtual machine, e.g. # virsh snapshot-create-as --domain vm-123 --no-metadata --disk-only --diskspec sda,file=/var/lib/libvirt/qemu/snapshot/disk-123.qcow2 Resulting core dump: #0 0x00007fbaee61f18b in raise () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007fbaee5fe859 in abort () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00007fbaee5fe729 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #3 0x00007fbaee60ff36 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6 #4 0x00007fbaed64663f in qemu_rbd_co_block_status (bs=<optimized out>, want_zero=<optimized out>, offset=4259840, bytes=12288, pnum=0x7fba27bfb980, map=<optimized out>, file=0x7fba27bfb6c8) at ../../block/rbd.c:1355 #5 0x00005566ab8f574c in bdrv_co_block_status (bs=0x5566ac468220, want_zero=want_zero@entry=false, offset=4259840, bytes=12288, pnum=pnum@entry=0x7fba27bfb980, map=map@entry=0x7fba27bfb770, file=0x7fba27bfb778) at ../../block/io.c:2489 #6 0x00005566ab8f582b in bdrv_co_block_status (bs=bs@entry=0x5566ac62ffd0, want_zero=want_zero@entry=false, offset=offset@entry=4259840, bytes=bytes@entry=12288, pnum=pnum@entry=0x7fba27bfb980, map=map@entry=0x0, file=0x0) at ../../block/io.c:2557 #7 0x00005566ab8f8589 in bdrv_co_common_block_status_above (bs=bs@entry=0x5566acdf0400, base=base@entry=0x0, include_base=include_base@entry=false, want_zero=want_zero@entry=false, offset=offset@entry=4259840, bytes=bytes@entry=12288, pnum=0x7fba27bfb980, map=0x0, file=0x0, depth=0x7fba27bfb824) at ../../block/io.c:2667 #8 0x00005566ab8c975a in bdrv_common_block_status_above (bs=0x5566acdf0400, base=base@entry=0x0, include_base=include_base@entry=false, want_zero=want_zero@entry=false, offset=4259840, bytes=bytes@entry=12288, pnum=0x7fba27bfb980, map=0x0, file=0x0, depth=0x0) at block/block-gen.c:444 #9 0x00005566ab8f8920 in bdrv_co_is_zero_fast (bs=bs@entry=0x5566acdf0400, offset=<optimized out>, bytes=12288) at ../../block/io.c:2755 #10 0x00005566ab91c924 in is_zero_cow (m=0x5566ac938660, bs=0x5566acdf0400) at ../../block/qcow2.c:2477 #11 handle_alloc_space (l2meta=<optimized out>, bs=0x5566acdf0400) at ../../block/qcow2.c:2477 #12 qcow2_co_pwritev_task (l2meta=<optimized out>, qiov_offset=<optimized out>, qiov=0x5566ad374160, bytes=<optimized out>, offset=<optimized out>, host_offset=<optimized out>, bs=0x5566acdf0400) at ../../block/qcow2.c:2550 #13 qcow2_co_pwritev_task_entry (task=<optimized out>) at ../../block/qcow2.c:2594 #14 0x00005566ab919866 in qcow2_add_task (bs=bs@entry=0x5566acdf0400, pool=pool@entry=0x0, func=func@entry=0x5566ab91c640 <qcow2_co_pwritev_task_entry>, subcluster_type=subcluster_type@entry=QCOW2_SUBCLUSTER_UNALLOCATED_PLAIN, host_offset=471040, offset=offset@entry=4272128, bytes=4096, qiov=0x5566ad374160, qiov_offset=0, l2meta=0x5566ac938660) at ../../block/qcow2.c:2249 #15 0x00005566ab919fe7 in qcow2_co_pwritev_part (bs=0x5566acdf0400, offset=4272128, bytes=4096, qiov=0x5566ad374160, qiov_offset=0, flags=<optimized out>) at ../../block/qcow2.c:2645 #16 0x00005566ab8f9099 in bdrv_driver_pwritev (bs=bs@entry=0x5566acdf0400, offset=offset@entry=4272128, bytes=bytes@entry=4096, qiov=qiov@entry=0x5566ad374160, qiov_offset=qiov_offset@entry=0, flags=flags@entry=0) at ../../block/io.c:1252 #17 0x00005566ab8fb15f in bdrv_aligned_pwritev (child=0x5566ac6271e0, req=0x7fba27bfbe00, offset=4272128, bytes=4096, align=<optimized out>, qiov=0x5566ad374160, qiov_offset=0, flags=0) at ../../block/io.c:2126 #18 0x00005566ab8fbba8 in bdrv_co_pwritev_part (child=0x5566ac6271e0, offset=<optimized out>, offset@entry=4272128, bytes=<optimized out>, bytes@entry=4096, qiov=<optimized out>, qiov@entry=0x5566ad374160, qiov_offset=<optimized out>, qiov_offset@entry=0, flags=flags@entry=0) at ../../block/io.c:2314 #19 0x00005566ab8ec21d in blk_co_do_pwritev_part (blk=0x5566ad94e410, offset=4272128, bytes=4096, qiov=0x5566ad374160, qiov_offset=qiov_offset@entry=0, flags=0) at ../../block/block-backend.c:1283 #20 0x00005566ab8ec38f in blk_aio_write_entry (opaque=0x5566adfeefc0) at ../../block/block-backend.c:1467 #21 0x00005566ab9ddaa3 in coroutine_trampoline (i0=<optimized out>, i1=<optimized out>) at ../../util/coroutine-ucontext.c:173 #22 0x00007fbaee637660 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 #23 0x00007ffc5fa8c270 in ?? () #24 0x0000000000000000 in ?? () ** Affects: qemu (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1968258 Title: Data corruption in qemu_rbd_co_block_status To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1968258/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs