qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 0/4] Drop virtio-{blk,scsi} op blockers


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH v2 0/4] Drop virtio-{blk,scsi} op blockers
Date: Wed, 25 May 2016 15:20:08 +0800
User-agent: Mutt/1.6.1 (2016-04-27)

On Mon, 05/23 10:19, Fam Zheng wrote:
> v2: Switch to bdrv_lookup_bs on target_bs. [Kevin]
>     Rebase onto master.
>     Add Michael's ack-by in virtio patches.
> 
> We are ready to get rid of dataplane's op blockers altogether. Most operations
> are already unblocked in virtio-blk, and those remained for virtio-scsi only
> because we haven't got around to add counterpart unblocking code.
> 
> The first patch fixes an existing bug with blockdev-backup. Then the op
> blockers are removed from both devices.

Without this series, completing a mirror job on virtio-blk-dataplane disk fails
an assertion (thanks to Yanbin Duan <address@hidden> for providing the
backtrace):

block.c:2338: bdrv_delete: Assertion `bdrv_op_blocker_is_empty(bs)' failed.
 
(gdb) bt
#0  0x00007f10d44915f7 in raise () from /lib64/libc.so.6
#1  0x00007f10d4492ce8 in abort () from /lib64/libc.so.6
#2  0x00007f10d448a566 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f10d448a612 in __assert_fail () from /lib64/libc.so.6
#4  0x00007f10dc9f856f in bdrv_delete (bs=0x7f10de16e800) at block.c:2338
#5  bdrv_unref (bs=0x7f10de16e800) at block.c:3376
#6  0x00007f10dc9fb353 in block_job_defer_to_main_loop_bh 
(opaque=0x7f10de038310) at blockjob.c:476
#7  0x00007f10dc9f3fcd in aio_bh_call (bh=<optimized out>) at async.c:66
#8  aio_bh_poll (address@hidden) at async.c:94
#9  0x00007f10dc9fdb70 in aio_dispatch (ctx=0x7f10de109980) at aio-posix.c:308
#10 0x00007f10dc9f3dbe in aio_ctx_dispatch (source=<optimized out>, 
callback=<optimized out>,
    user_data=<optimized out>) at async.c:233
---Type <return> to continue, or q <return> to quit---
#11 0x00007f10d528f79a in g_main_context_dispatch () from 
/lib64/libglib-2.0.so.0
#12 0x00007f10dc9fc460 in glib_pollfds_poll () at main-loop.c:213
#13 os_host_main_loop_wait (timeout=<optimized out>) at main-loop.c:258
#14 main_loop_wait (nonblocking=<optimized out>) at main-loop.c:506
#15 0x00007f10dc7c655f in main_loop () at vl.c:1934
#16 main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at 
vl.c:4667

This is because the bdrv_replace_in_backing_chain skipped the BlockBackend's
"remove notifier" which is responsible for dropping the dataplane op blockers.

Now we are dropping the notifier handlers, the crash is gone.  Therefore this
should probably be included in address@hidden because it affacts 2.6
too.

Fam



reply via email to

[Prev in Thread] Current Thread [Next in Thread]