Lines Matching refs:exp

52     BlockExport *exp;  in blk_exp_find()  local
54 QLIST_FOREACH(exp, &block_exports, next) { in blk_exp_find()
55 if (strcmp(id, exp->id) == 0) { in blk_exp_find()
56 return exp; in blk_exp_find()
79 BlockExport *exp = NULL; in blk_exp_add() local
176 exp = g_malloc0(drv->instance_size); in blk_exp_add()
177 *exp = (BlockExport) { in blk_exp_add()
186 ret = drv->create(exp, export, errp); in blk_exp_add()
191 assert(exp->blk != NULL); in blk_exp_add()
193 QLIST_INSERT_HEAD(&block_exports, exp, next); in blk_exp_add()
196 return exp; in blk_exp_add()
204 if (exp) { in blk_exp_add()
205 g_free(exp->id); in blk_exp_add()
206 g_free(exp); in blk_exp_add()
211 void blk_exp_ref(BlockExport *exp) in blk_exp_ref() argument
213 assert(qatomic_read(&exp->refcount) > 0); in blk_exp_ref()
214 qatomic_inc(&exp->refcount); in blk_exp_ref()
220 BlockExport *exp = opaque; in blk_exp_delete_bh() local
221 AioContext *aio_context = exp->ctx; in blk_exp_delete_bh()
225 assert(exp->refcount == 0); in blk_exp_delete_bh()
226 QLIST_REMOVE(exp, next); in blk_exp_delete_bh()
227 exp->drv->delete(exp); in blk_exp_delete_bh()
228 blk_set_dev_ops(exp->blk, NULL, NULL); in blk_exp_delete_bh()
229 blk_unref(exp->blk); in blk_exp_delete_bh()
230 qapi_event_send_block_export_deleted(exp->id); in blk_exp_delete_bh()
231 g_free(exp->id); in blk_exp_delete_bh()
232 g_free(exp); in blk_exp_delete_bh()
237 void blk_exp_unref(BlockExport *exp) in blk_exp_unref() argument
239 assert(qatomic_read(&exp->refcount) > 0); in blk_exp_unref()
240 if (qatomic_fetch_dec(&exp->refcount) == 1) { in blk_exp_unref()
243 exp); in blk_exp_unref()
255 void blk_exp_request_shutdown(BlockExport *exp) in blk_exp_request_shutdown() argument
257 AioContext *aio_context = exp->ctx; in blk_exp_request_shutdown()
266 if (!exp->user_owned) { in blk_exp_request_shutdown()
270 exp->drv->request_shutdown(exp); in blk_exp_request_shutdown()
272 assert(exp->user_owned); in blk_exp_request_shutdown()
273 exp->user_owned = false; in blk_exp_request_shutdown()
274 blk_exp_unref(exp); in blk_exp_request_shutdown()
286 BlockExport *exp; in blk_exp_has_type() local
292 QLIST_FOREACH(exp, &block_exports, next) { in blk_exp_has_type()
293 if (exp->drv->type == type) { in blk_exp_has_type()
304 BlockExport *exp, *next; in blk_exp_close_all_type() local
308 QLIST_FOREACH_SAFE(exp, &block_exports, next, next) { in blk_exp_close_all_type()
309 if (type != BLOCK_EXPORT_TYPE__MAX && exp->drv->type != type) { in blk_exp_close_all_type()
312 blk_exp_request_shutdown(exp); in blk_exp_close_all_type()
333 BlockExport *exp; in qmp_block_export_del() local
335 exp = blk_exp_find(id); in qmp_block_export_del()
336 if (exp == NULL) { in qmp_block_export_del()
340 if (!exp->user_owned) { in qmp_block_export_del()
349 qatomic_read(&exp->refcount) > 1) { in qmp_block_export_del()
350 error_setg(errp, "export '%s' still in use", exp->id); in qmp_block_export_del()
356 blk_exp_request_shutdown(exp); in qmp_block_export_del()
362 BlockExport *exp; in qmp_query_block_exports() local
364 QLIST_FOREACH(exp, &block_exports, next) { in qmp_query_block_exports()
367 .id = g_strdup(exp->id), in qmp_query_block_exports()
368 .type = exp->drv->type, in qmp_query_block_exports()
369 .node_name = g_strdup(bdrv_get_node_name(blk_bs(exp->blk))), in qmp_query_block_exports()
370 .shutting_down = !exp->user_owned, in qmp_query_block_exports()