mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
tests/qtest/migration: Add tests for file migration with direct-io
The tests are only allowed to run in systems that know about the O_DIRECT flag and in filesystems which support it. Note: this also brings back migrate_set_parameter_bool() which went away when we removed the compression tests. I copied it verbatim. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
9d70239e56
commit
408d295da8
3 changed files with 114 additions and 0 deletions
|
@ -18,6 +18,7 @@
|
|||
#include "qapi/error.h"
|
||||
#include "qapi/qmp/qlist.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "qemu/memalign.h"
|
||||
|
||||
#include "migration-helpers.h"
|
||||
|
||||
|
@ -473,3 +474,46 @@ void migration_test_add(const char *path, void (*fn)(void))
|
|||
qtest_add_data_func_full(path, test, migration_test_wrapper,
|
||||
migration_test_destroy);
|
||||
}
|
||||
|
||||
#ifdef O_DIRECT
|
||||
/*
|
||||
* Probe for O_DIRECT support on the filesystem. Since this is used
|
||||
* for tests, be conservative, if anything fails, assume it's
|
||||
* unsupported.
|
||||
*/
|
||||
bool probe_o_direct_support(const char *tmpfs)
|
||||
{
|
||||
g_autofree char *filename = g_strdup_printf("%s/probe-o-direct", tmpfs);
|
||||
int fd, flags = O_CREAT | O_RDWR | O_TRUNC | O_DIRECT;
|
||||
void *buf;
|
||||
ssize_t ret, len;
|
||||
uint64_t offset;
|
||||
|
||||
fd = open(filename, flags, 0660);
|
||||
if (fd < 0) {
|
||||
unlink(filename);
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Using 1MB alignment as conservative choice to satisfy any
|
||||
* plausible architecture default page size, and/or filesystem
|
||||
* alignment restrictions.
|
||||
*/
|
||||
len = 0x100000;
|
||||
offset = 0x100000;
|
||||
|
||||
buf = qemu_try_memalign(len, len);
|
||||
g_assert(buf);
|
||||
|
||||
ret = pwrite(fd, buf, len, offset);
|
||||
unlink(filename);
|
||||
g_free(buf);
|
||||
|
||||
if (ret < 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue