mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
Convert all block drivers to new bdrv_create
Now we can make use of the newly introduced option structures. Instead of having bdrv_create carry more and more parameters (which are format specific in most cases), just pass a option structure as defined by the driver itself. bdrv_create2() contains an emulation of the old interface to simplify the transition. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
d3f243676a
commit
0e7e1989f7
12 changed files with 212 additions and 53 deletions
|
@ -823,13 +823,18 @@ again:
|
|||
}
|
||||
#endif
|
||||
|
||||
static int raw_create(const char *filename, int64_t total_size,
|
||||
const char *backing_file, int flags)
|
||||
static int raw_create(const char *filename, QEMUOptionParameter *options)
|
||||
{
|
||||
int fd;
|
||||
int64_t total_size = 0;
|
||||
|
||||
if (flags || backing_file)
|
||||
return -ENOTSUP;
|
||||
/* Read out options */
|
||||
while (options && options->name) {
|
||||
if (!strcmp(options->name, BLOCK_OPT_SIZE)) {
|
||||
total_size = options->value.n / 512;
|
||||
}
|
||||
options++;
|
||||
}
|
||||
|
||||
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,
|
||||
0644);
|
||||
|
@ -846,6 +851,12 @@ static void raw_flush(BlockDriverState *bs)
|
|||
fsync(s->fd);
|
||||
}
|
||||
|
||||
|
||||
static QEMUOptionParameter raw_create_options[] = {
|
||||
{ BLOCK_OPT_SIZE, OPT_SIZE },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static BlockDriver bdrv_raw = {
|
||||
.format_name = "raw",
|
||||
.instance_size = sizeof(BDRVRawState),
|
||||
|
@ -866,6 +877,8 @@ static BlockDriver bdrv_raw = {
|
|||
|
||||
.bdrv_truncate = raw_truncate,
|
||||
.bdrv_getlength = raw_getlength,
|
||||
|
||||
.create_options = raw_create_options,
|
||||
};
|
||||
|
||||
/***********************************************/
|
||||
|
@ -1364,15 +1377,20 @@ static BlockDriverAIOCB *raw_aio_ioctl(BlockDriverState *bs,
|
|||
#endif /* !linux && !FreeBSD */
|
||||
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
static int hdev_create(const char *filename, int64_t total_size,
|
||||
const char *backing_file, int flags)
|
||||
static int hdev_create(const char *filename, QEMUOptionParameter *options)
|
||||
{
|
||||
int fd;
|
||||
int ret = 0;
|
||||
struct stat stat_buf;
|
||||
int64_t total_size = 0;
|
||||
|
||||
if (flags || backing_file)
|
||||
return -ENOTSUP;
|
||||
/* Read out options */
|
||||
while (options && options->name) {
|
||||
if (!strcmp(options->name, "size")) {
|
||||
total_size = options->value.n / 512;
|
||||
}
|
||||
options++;
|
||||
}
|
||||
|
||||
fd = open(filename, O_WRONLY | O_BINARY);
|
||||
if (fd < 0)
|
||||
|
@ -1391,8 +1409,7 @@ static int hdev_create(const char *filename, int64_t total_size,
|
|||
|
||||
#else /* !(linux || freebsd) */
|
||||
|
||||
static int hdev_create(const char *filename, int64_t total_size,
|
||||
const char *backing_file, int flags)
|
||||
static int hdev_create(const char *filename, QEMUOptionParameter *options)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue