Re: [PATCH 26/30] ext4: do not send discards as barriers

From: Jeff Moyer
Date: Mon Aug 30 2010 - 17:04:16 EST


Jan Kara <jack@xxxxxxx> writes:

> On Mon 30-08-10 15:56:43, Jeff Moyer wrote:
>> Jan Kara <jack@xxxxxxx> writes:
>>
>> > An update: I've set up an ext4 barrier testing in KVM - run fsstress,
>> > kill KVM at some random moment and check that the filesystem is consistent
>> > (kvm is run in cache=writeback mode to simulate disk cache). About 70 runs
>>
>> But doesn't your "disk cache" survive the "power cycle" of your guest?
> Yes, you're right. Thinking about it now the test setup was wrong because
> it didn't refuse writes to the VM's data partition after the moment I
> killed KVM. Thanks for catching this. I will probably have to use the fault
> injection on the host to disallow writing the device at a certain moment.
> Or does somebody have a better option?
> My setup is that I have a dedicated partition / drive for a filesystem
> which is written to from a guest kernel running under KVM. I have set it up
> using virtio driver with cache=writeback so that the host caches the writes
> in a similar way disk caches them. At some point I just kill the qemu-kvm
> process and at that point I'd like to also throw away data cached by the
> host...

I've used ilo to power off the system under test from remote. I have a
tool to automate the testing. It works as follows:

There's a client and a server. The server listens on an ip/port for
connections. A client will connect, tell the server it's configuration
(including what disk it's writing to, what block size it's using, and
the total amount of I/O to be done), and then start doing I/O. The I/O
is done using the AIO api, and the data written includes a block number,
a generation number, fill, and a crc. As each completion comes in, the
completed sectors are communicated to the server program. Upon
completion of an entire series of writes (writing the entire data set
once), the server waits some amount of time and then power cycles the
client. The client comes back up and is run in check mode to verify
that all of the data it reported as completed to the server is actually
in tact.

I recently updated the code to run against a file on a file system
(previously it would only work on a block device). It makes use of
stonith modules to do the power cycling. It works, but it isn't the
most elegant bit of engineering I've ever done. ;-)

Anyway, that code is available here:
http://people.redhat.com/jmoyer/dainto-0.99.4.tar.bz2

Cheers,
Jeff
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/