nbd.c (374c52467a38c2e811f6c0db4edc9ea7d5f34341) | nbd.c (af91062ee1408f7f5bb58389d355d29a5040c648) |
---|---|
1/* 2 * QEMU Block driver for NBD 3 * 4 * Copyright (C) 2008 Bull S.A.S. 5 * Author: Laurent Vivier <Laurent.Vivier@bull.net> 6 * 7 * Some parts: 8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws> --- 249 unchanged lines hidden (view full) --- 258 return true; 259} 260 261static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, 262 Error **errp) 263{ 264 SocketAddress *saddr = NULL; 265 QDict *addr = NULL; | 1/* 2 * QEMU Block driver for NBD 3 * 4 * Copyright (C) 2008 Bull S.A.S. 5 * Author: Laurent Vivier <Laurent.Vivier@bull.net> 6 * 7 * Some parts: 8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws> --- 249 unchanged lines hidden (view full) --- 258 return true; 259} 260 261static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, 262 Error **errp) 263{ 264 SocketAddress *saddr = NULL; 265 QDict *addr = NULL; |
266 QObject *crumpled_addr = NULL; | |
267 Visitor *iv = NULL; 268 Error *local_err = NULL; 269 270 qdict_extract_subqdict(options, &addr, "server."); 271 if (!qdict_size(addr)) { 272 error_setg(errp, "NBD server address missing"); 273 goto done; 274 } 275 | 266 Visitor *iv = NULL; 267 Error *local_err = NULL; 268 269 qdict_extract_subqdict(options, &addr, "server."); 270 if (!qdict_size(addr)) { 271 error_setg(errp, "NBD server address missing"); 272 goto done; 273 } 274 |
276 crumpled_addr = qdict_crumple_for_keyval_qiv(addr, errp); 277 if (!crumpled_addr) { | 275 iv = qobject_input_visitor_new_flat_confused(addr, errp); 276 if (!iv) { |
278 goto done; 279 } 280 | 277 goto done; 278 } 279 |
281 iv = qobject_input_visitor_new_keyval(crumpled_addr); | |
282 visit_type_SocketAddress(iv, NULL, &saddr, &local_err); 283 if (local_err) { 284 error_propagate(errp, local_err); 285 goto done; 286 } 287 288done: 289 qobject_unref(addr); | 280 visit_type_SocketAddress(iv, NULL, &saddr, &local_err); 281 if (local_err) { 282 error_propagate(errp, local_err); 283 goto done; 284 } 285 286done: 287 qobject_unref(addr); |
290 qobject_unref(crumpled_addr); | |
291 visit_free(iv); 292 return saddr; 293} 294 295NBDClientSession *nbd_get_client_session(BlockDriverState *bs) 296{ 297 BDRVNBDState *s = bs->opaque; 298 return &s->client; --- 333 unchanged lines hidden --- | 288 visit_free(iv); 289 return saddr; 290} 291 292NBDClientSession *nbd_get_client_session(BlockDriverState *bs) 293{ 294 BDRVNBDState *s = bs->opaque; 295 return &s->client; --- 333 unchanged lines hidden --- |