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
173 exp = g_malloc0(drv->instance_size); in blk_exp_add()
174 *exp = (BlockExport) { in blk_exp_add()
183 ret = drv->create(exp, export, errp); in blk_exp_add()
188 assert(exp->blk != NULL); in blk_exp_add()
190 QLIST_INSERT_HEAD(&block_exports, exp, next); in blk_exp_add()
191 return exp; in blk_exp_add()
198 if (exp) { in blk_exp_add()
199 g_free(exp->id); in blk_exp_add()
200 g_free(exp); in blk_exp_add()
205 void blk_exp_ref(BlockExport *exp) in blk_exp_ref() argument
207 assert(qatomic_read(&exp->refcount) > 0); in blk_exp_ref()
208 qatomic_inc(&exp->refcount); in blk_exp_ref()
214 BlockExport *exp = opaque; in blk_exp_delete_bh() local
216 assert(exp->refcount == 0); in blk_exp_delete_bh()
217 QLIST_REMOVE(exp, next); in blk_exp_delete_bh()
218 exp->drv->delete(exp); in blk_exp_delete_bh()
219 blk_set_dev_ops(exp->blk, NULL, NULL); in blk_exp_delete_bh()
220 blk_unref(exp->blk); in blk_exp_delete_bh()
221 qapi_event_send_block_export_deleted(exp->id); in blk_exp_delete_bh()
222 g_free(exp->id); in blk_exp_delete_bh()
223 g_free(exp); in blk_exp_delete_bh()
226 void blk_exp_unref(BlockExport *exp) in blk_exp_unref() argument
228 assert(qatomic_read(&exp->refcount) > 0); in blk_exp_unref()
229 if (qatomic_fetch_dec(&exp->refcount) == 1) { in blk_exp_unref()
232 exp); in blk_exp_unref()
242 void blk_exp_request_shutdown(BlockExport *exp) in blk_exp_request_shutdown() argument
249 if (!exp->user_owned) { in blk_exp_request_shutdown()
253 exp->drv->request_shutdown(exp); in blk_exp_request_shutdown()
255 assert(exp->user_owned); in blk_exp_request_shutdown()
256 exp->user_owned = false; in blk_exp_request_shutdown()
257 blk_exp_unref(exp); in blk_exp_request_shutdown()
266 BlockExport *exp; in blk_exp_has_type() local
272 QLIST_FOREACH(exp, &block_exports, next) { in blk_exp_has_type()
273 if (exp->drv->type == type) { in blk_exp_has_type()
284 BlockExport *exp, *next; in blk_exp_close_all_type() local
288 QLIST_FOREACH_SAFE(exp, &block_exports, next, next) { in blk_exp_close_all_type()
289 if (type != BLOCK_EXPORT_TYPE__MAX && exp->drv->type != type) { in blk_exp_close_all_type()
292 blk_exp_request_shutdown(exp); in blk_exp_close_all_type()
313 BlockExport *exp; in qmp_block_export_del() local
315 exp = blk_exp_find(id); in qmp_block_export_del()
316 if (exp == NULL) { in qmp_block_export_del()
320 if (!exp->user_owned) { in qmp_block_export_del()
329 qatomic_read(&exp->refcount) > 1) { in qmp_block_export_del()
330 error_setg(errp, "export '%s' still in use", exp->id); in qmp_block_export_del()
336 blk_exp_request_shutdown(exp); in qmp_block_export_del()
342 BlockExport *exp; in qmp_query_block_exports() local
344 QLIST_FOREACH(exp, &block_exports, next) { in qmp_query_block_exports()
347 .id = g_strdup(exp->id), in qmp_query_block_exports()
348 .type = exp->drv->type, in qmp_query_block_exports()
349 .node_name = g_strdup(bdrv_get_node_name(blk_bs(exp->blk))), in qmp_query_block_exports()
350 .shutting_down = !exp->user_owned, in qmp_query_block_exports()