mirror of https://github.com/xemu-project/xemu.git
raw-posix: Handle errors in raw_create
In qemu-iotests, some large images are created using qemu-img. Without checks for errors, qemu-img will just create an empty image, and later read / write tests will fail. With the patch, failures during image creation are detected and reported. Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
09ac35ac31
commit
1e37d05904
|
@ -852,6 +852,7 @@ again:
|
||||||
static int raw_create(const char *filename, QEMUOptionParameter *options)
|
static int raw_create(const char *filename, QEMUOptionParameter *options)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
int result = 0;
|
||||||
int64_t total_size = 0;
|
int64_t total_size = 0;
|
||||||
|
|
||||||
/* Read out options */
|
/* Read out options */
|
||||||
|
@ -864,11 +865,17 @@ static int raw_create(const char *filename, QEMUOptionParameter *options)
|
||||||
|
|
||||||
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,
|
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,
|
||||||
0644);
|
0644);
|
||||||
if (fd < 0)
|
if (fd < 0) {
|
||||||
return -EIO;
|
result = -errno;
|
||||||
ftruncate(fd, total_size * 512);
|
} else {
|
||||||
close(fd);
|
if (ftruncate(fd, total_size * 512) != 0) {
|
||||||
return 0;
|
result = -errno;
|
||||||
|
}
|
||||||
|
if (close(fd) != 0) {
|
||||||
|
result = -errno;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void raw_flush(BlockDriverState *bs)
|
static void raw_flush(BlockDriverState *bs)
|
||||||
|
|
Loading…
Reference in New Issue