qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] qemu 2.0, deadlock in block-commit


From: Marcin Gibuła
Subject: Re: [Qemu-devel] qemu 2.0, deadlock in block-commit
Date: Mon, 26 May 2014 14:58:35 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

Two options for making progress on this bug:

1. Debug bdrv_drain_all() and find out whether there are any I/O
    requests remaining.

Yes, there is one request pending on active layer of disk that is being commited (on bs->tracked_requests list). IO threads die off because they have nothing to do... it seems that requests are somehow not commited into threads.

I tried hard (and will continue to try) to debug this, but documentation is limited :-) so ANY tips where to look are welcome.

2. Post steps for reproducing this problem (exact command-lines or virsh
    commands used).

I'm using application that talks with libvirt via API, so I describe what it does.

1. Create a VM, boot a system. I'm using iso from http://www.sysresccd.org

2. VM has a mounted QCOW2 disk with following hierarchy:
[file1] -> [file2 (active)]

Both are qcow2 files.

3. Open console. Start command:

while true; do dd if=/dev/zero of=/dev/vdX bs=512k oflag=direct; done;

Where vdX is of course qcow2 disk described above.

4. Create snapshot of file2 (virDomainSnapshotCreateXML). So now we have:

[file1] -> [file2] -> [file3 (active)] -

5. Wait couple of seconds (so snapshot fills up).

6. Commit file2 into file1 (virDomainBlockCommit).

7. During commit, another threads is using virDomainGetBlockJobInfo() to query its progress.

Note - it doesn't always happen. I have about 1 per 10 failure rate with this procedure.

Do you want me to reproduce it manually with pure virsh?

--
mg



reply via email to

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