@@ -148,108 +148,36 @@ static QemuOptsList block_crypto_create_opts_luks = {
148
148
149
149
150
150
QCryptoBlockOpenOptions *
151
- block_crypto_open_opts_init (QCryptoBlockFormat format ,
152
- QDict * opts ,
153
- Error * * errp )
151
+ block_crypto_open_opts_init (QDict * opts , Error * * errp )
154
152
{
155
153
Visitor * v ;
156
- QCryptoBlockOpenOptions * ret = NULL ;
157
- Error * local_err = NULL ;
158
-
159
- ret = g_new0 (QCryptoBlockOpenOptions , 1 );
160
- ret -> format = format ;
154
+ QCryptoBlockOpenOptions * ret ;
161
155
162
- v = qobject_input_visitor_new_flat_confused (opts , & local_err );
156
+ v = qobject_input_visitor_new_flat_confused (opts , errp );
163
157
if (!v ) {
164
- goto out ;
165
- }
166
-
167
- visit_start_struct (v , NULL , NULL , 0 , & local_err );
168
- if (local_err ) {
169
- goto out ;
170
- }
171
-
172
- switch (format ) {
173
- case Q_CRYPTO_BLOCK_FORMAT_LUKS :
174
- visit_type_QCryptoBlockOptionsLUKS_members (
175
- v , & ret -> u .luks , & local_err );
176
- break ;
177
-
178
- case Q_CRYPTO_BLOCK_FORMAT_QCOW :
179
- visit_type_QCryptoBlockOptionsQCow_members (
180
- v , & ret -> u .qcow , & local_err );
181
- break ;
182
-
183
- default :
184
- error_setg (& local_err , "Unsupported block format %d" , format );
185
- break ;
186
- }
187
- if (!local_err ) {
188
- visit_check_struct (v , & local_err );
158
+ return NULL ;
189
159
}
190
160
191
- visit_end_struct (v , NULL );
161
+ visit_type_QCryptoBlockOpenOptions (v , NULL , & ret , errp );
192
162
193
- out :
194
- if (local_err ) {
195
- error_propagate (errp , local_err );
196
- qapi_free_QCryptoBlockOpenOptions (ret );
197
- ret = NULL ;
198
- }
199
163
visit_free (v );
200
164
return ret ;
201
165
}
202
166
203
167
204
168
QCryptoBlockCreateOptions *
205
- block_crypto_create_opts_init (QCryptoBlockFormat format ,
206
- QDict * opts ,
207
- Error * * errp )
169
+ block_crypto_create_opts_init (QDict * opts , Error * * errp )
208
170
{
209
171
Visitor * v ;
210
- QCryptoBlockCreateOptions * ret = NULL ;
211
- Error * local_err = NULL ;
212
-
213
- ret = g_new0 (QCryptoBlockCreateOptions , 1 );
214
- ret -> format = format ;
172
+ QCryptoBlockCreateOptions * ret ;
215
173
216
- v = qobject_input_visitor_new_flat_confused (opts , & local_err );
174
+ v = qobject_input_visitor_new_flat_confused (opts , errp );
217
175
if (!v ) {
218
- goto out ;
219
- }
220
-
221
- visit_start_struct (v , NULL , NULL , 0 , & local_err );
222
- if (local_err ) {
223
- goto out ;
224
- }
225
-
226
- switch (format ) {
227
- case Q_CRYPTO_BLOCK_FORMAT_LUKS :
228
- visit_type_QCryptoBlockCreateOptionsLUKS_members (
229
- v , & ret -> u .luks , & local_err );
230
- break ;
231
-
232
- case Q_CRYPTO_BLOCK_FORMAT_QCOW :
233
- visit_type_QCryptoBlockOptionsQCow_members (
234
- v , & ret -> u .qcow , & local_err );
235
- break ;
236
-
237
- default :
238
- error_setg (& local_err , "Unsupported block format %d" , format );
239
- break ;
240
- }
241
- if (!local_err ) {
242
- visit_check_struct (v , & local_err );
176
+ return NULL ;
243
177
}
244
178
245
- visit_end_struct (v , NULL );
179
+ visit_type_QCryptoBlockCreateOptions (v , NULL , & ret , errp );
246
180
247
- out :
248
- if (local_err ) {
249
- error_propagate (errp , local_err );
250
- qapi_free_QCryptoBlockCreateOptions (ret );
251
- ret = NULL ;
252
- }
253
181
visit_free (v );
254
182
return ret ;
255
183
}
@@ -287,8 +215,9 @@ static int block_crypto_open_generic(QCryptoBlockFormat format,
287
215
}
288
216
289
217
cryptoopts = qemu_opts_to_qdict (opts , NULL );
218
+ qdict_put_str (cryptoopts , "format" , QCryptoBlockFormat_str (format ));
290
219
291
- open_opts = block_crypto_open_opts_init (format , cryptoopts , errp );
220
+ open_opts = block_crypto_open_opts_init (cryptoopts , errp );
292
221
if (!open_opts ) {
293
222
goto cleanup ;
294
223
}
@@ -612,8 +541,8 @@ static int coroutine_fn block_crypto_co_create_opts_luks(const char *filename,
612
541
& block_crypto_create_opts_luks ,
613
542
true);
614
543
615
- create_opts = block_crypto_create_opts_init ( Q_CRYPTO_BLOCK_FORMAT_LUKS ,
616
- cryptoopts , errp );
544
+ qdict_put_str ( cryptoopts , "format" , "luks" );
545
+ create_opts = block_crypto_create_opts_init ( cryptoopts , errp );
617
546
if (!create_opts ) {
618
547
ret = - EINVAL ;
619
548
goto fail ;
0 commit comments