qemu-block
[Top][All Lists]
Advanced

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

Re: [Qemu-block] [PATCH 1/5] block: Add blklogwrites


From: Ari Sundholm
Subject: Re: [Qemu-block] [PATCH 1/5] block: Add blklogwrites
Date: Fri, 1 Jun 2018 17:24:53 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 06/01/2018 04:32 PM, Stefan Hajnoczi wrote:
On Fri, Jun 01, 2018 at 12:17:19AM +0300, Ari Sundholm wrote:
From: Aapo Vienamo <address@hidden>

Thanks for the patch!

Implements a block device write logging system, similar to Linux kernel
device mapper dm-log-writes. The write operations that are performed
on a block device are logged to a file or another block device. The
write log format is identical to the dm-log-writes format. Currently,
log markers are not supported.

This functionality can be used for fail-safe and fs consistency
testing. By implementing it in qemu, tests utilizing write logs can be
be used to test non-Linux drivers and older kernels.

This patch doesn't implement the same semantics as dm-log-writes, where
only completed writes are logged to make fs consistency testing easier.
If you intend to use it for this purpose, shouldn't it act the same way
as dm-log-writes?


I am not quite sure what you mean. I am not the original author of this proposed feature, but to me (admittedly with little experience of qemu internals), it looks like the driver accurately logs the writes and flushes performed on the guest block device. It intentionally does not concern itself with when the write actually hits the physical host block device or file, as we're interested in the direct interactions between a filesystem driver and the guest block device. The write hitting the various levels of the host-side caches and devices is left up to the caching mode. But perhaps there's something obvious I'm not seeing?

Speaking of the caching mode, I now realized that the log superblock is probably never written out when cache=unsafe is set, which will need fixing.

The implementation is based on the blkverify and blkdebug block drivers.

This functionality overlaps with existing block drivers.  In the
long-term people want to observe I/O requests in various ways beyond
what the dm-log-writes offers.  Therefore I'd like to suggest a
different approach that extends the quorum driver instead:

Add a read-pattern=first parameter to the block/quorum.c driver so it
only reads from the first child.  QEMU can be launched with quorum and
NBD so that writes and flushes are mirrored to the external NBD server.

Any file format or online analysis can be implemented in the NBD server.
There are a number of NBD plugins here:
https://github.com/libguestfs/nbdkit

I think sending the writes and flushes over NBD is more flexible.


That sounds interesting! I will look into this possibility.

Thanks,
Ari Sundholm
address@hidden



reply via email to

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