]> git.proxmox.com Git - qemu.git/blob - block/raw_bsd.c
raw_bsd: add raw_create_options
[qemu.git] / block / raw_bsd.c
1 /* BlockDriver implementation for "raw"
2 *
3 * Copyright (C) 2010, 2013, Red Hat, Inc.
4 * Copyright (C) 2010, Blue Swirl <blauwirbel@gmail.com>
5 *
6 * Author:
7 * Laszlo Ersek <lersek@redhat.com>
8 *
9 * Permission is hereby granted, free of charge, to any person obtaining a copy
10 * of this software and associated documentation files (the "Software"), to
11 * deal in the Software without restriction, including without limitation the
12 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13 * sell copies of the Software, and to permit persons to whom the Software is
14 * furnished to do so, subject to the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be included in
17 * all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 * IN THE SOFTWARE.
26 */
27
28 #include "block/block_int.h"
29 #include "qemu/option.h"
30
31 static const QEMUOptionParameter raw_create_options[] = {
32 {
33 .name = BLOCK_OPT_SIZE,
34 .type = OPT_SIZE,
35 .help = "Virtual disk size"
36 },
37 { 0 }
38 };
39
40 static TYPE raw_reopen_prepare(BlockDriverState *bs)
41 {
42 return bdrv_reopen_prepare(bs->file);
43 }
44
45 static TYPE raw_co_readv(BlockDriverState *bs)
46 {
47 BLKDBG_EVENT(bs->file, BLKDBG_READ_AIO);
48 return bdrv_co_readv(bs->file);
49 }
50
51 static TYPE raw_co_writev(BlockDriverState *bs)
52 {
53 BLKDBG_EVENT(bs->file, BLKDBG_WRITE_AIO);
54 return bdrv_co_writev(bs->file);
55 }
56
57 static TYPE raw_co_is_allocated(BlockDriverState *bs)
58 {
59 return bdrv_co_is_allocated(bs->file);
60 }
61
62 static TYPE raw_co_write_zeroes(BlockDriverState *bs)
63 {
64 return bdrv_co_write_zeroes(bs->file);
65 }
66
67 static TYPE raw_co_discard(BlockDriverState *bs)
68 {
69 return bdrv_co_discard(bs->file);
70 }
71
72 static TYPE raw_getlength(BlockDriverState *bs)
73 {
74 return bdrv_getlength(bs->file);
75 }
76
77 static TYPE raw_get_info(BlockDriverState *bs)
78 {
79 return bdrv_get_info(bs->file);
80 }
81
82 static TYPE raw_truncate(BlockDriverState *bs)
83 {
84 return bdrv_truncate(bs->file);
85 }
86
87 static TYPE raw_is_inserted(BlockDriverState *bs)
88 {
89 return bdrv_is_inserted(bs->file);
90 }
91
92 static TYPE raw_media_changed(BlockDriverState *bs)
93 {
94 return bdrv_media_changed(bs->file);
95 }
96
97 static TYPE raw_eject(BlockDriverState *bs)
98 {
99 return bdrv_eject(bs->file);
100 }
101
102 static TYPE raw_lock_medium(BlockDriverState *bs)
103 {
104 return bdrv_lock_medium(bs->file);
105 }
106
107 static TYPE raw_ioctl(BlockDriverState *bs)
108 {
109 return bdrv_ioctl(bs->file);
110 }
111
112 static TYPE raw_aio_ioctl(BlockDriverState *bs)
113 {
114 return bdrv_aio_ioctl(bs->file);
115 }
116
117 static TYPE raw_has_zero_init(BlockDriverState *bs)
118 {
119 return bdrv_has_zero_init(bs->file);
120 }
121
122 static TYPE raw_create(void)
123 {
124 return bdrv_create_file();
125 }
126
127 static const char *raw_format_name(void)
128 {
129 return "raw";
130 }
131
132 static int raw_open(BlockDriverState *bs)
133 {
134 bs->sg = bs->file->sg;
135 return 0;
136 }
137
138 static void raw_close(void)
139 {
140 }
141
142 static int raw_probe(void)
143 {
144 /* smallest possible positive score so that raw is used if and only if no
145 * other block driver works
146 */
147 return 1;
148 }