Spdk/lib/bdev/spdk_bdev.map
Shuhei Matsumoto 1212b53fb8 bdev: Add spdk_bdev_for_each_bdev_io() to execute function for each bdev_io
Some use cases want to abort every bdev_io submitted to the bdev by
traversing the bdev channels.

However, struct spdk_bdev_channel is private in lib/bdev/bdev.c.

Hence, add a helper function spdk_bdev_for_each_bdev_io() to execute
the function on the appropriate thread for every bdev_io submitted
to the bdev.

This function should be used only from the bdev module and it should
be ensured that the bdev is not unregistered during execution.

We keep this function as generic as possible because we may have
other use cases in future.

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Ic0209361bd1228ea8d4cb3241d0df07106be58d9
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12751
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
2022-09-09 12:55:39 +00:00

171 lines
4.4 KiB
Plaintext

{
global:
# Public functions in bdev.h
spdk_bdev_get_opts;
spdk_bdev_set_opts;
spdk_bdev_wait_for_examine;
spdk_bdev_examine;
spdk_bdev_initialize;
spdk_bdev_finish;
spdk_bdev_subsystem_config_json;
spdk_bdev_get_by_name;
spdk_bdev_get_module_name;
spdk_bdev_first;
spdk_bdev_next;
spdk_bdev_first_leaf;
spdk_bdev_next_leaf;
spdk_for_each_bdev;
spdk_for_each_bdev_leaf;
spdk_bdev_open_ext;
spdk_bdev_close;
spdk_bdev_desc_get_bdev;
spdk_bdev_set_timeout;
spdk_bdev_io_type_supported;
spdk_bdev_dump_info_json;
spdk_bdev_get_name;
spdk_bdev_get_product_name;
spdk_bdev_get_block_size;
spdk_bdev_get_write_unit_size;
spdk_bdev_get_num_blocks;
spdk_bdev_get_qos_rpc_type;
spdk_bdev_get_qos_rate_limits;
spdk_bdev_set_qos_rate_limits;
spdk_bdev_get_buf_align;
spdk_bdev_get_optimal_io_boundary;
spdk_bdev_has_write_cache;
spdk_bdev_get_uuid;
spdk_bdev_get_acwu;
spdk_bdev_get_md_size;
spdk_bdev_is_md_interleaved;
spdk_bdev_is_md_separate;
spdk_bdev_is_zoned;
spdk_bdev_get_data_block_size;
spdk_bdev_get_physical_block_size;
spdk_bdev_get_dif_type;
spdk_bdev_is_dif_head_of_md;
spdk_bdev_is_dif_check_enabled;
spdk_bdev_get_qd;
spdk_bdev_get_qd_sampling_period;
spdk_bdev_set_qd_sampling_period;
spdk_bdev_get_io_time;
spdk_bdev_get_weighted_io_time;
spdk_bdev_get_io_channel;
spdk_bdev_get_module_ctx;
spdk_bdev_read;
spdk_bdev_read_blocks;
spdk_bdev_read_blocks_with_md;
spdk_bdev_readv;
spdk_bdev_readv_blocks;
spdk_bdev_readv_blocks_with_md;
spdk_bdev_write;
spdk_bdev_write_blocks;
spdk_bdev_write_blocks_with_md;
spdk_bdev_writev;
spdk_bdev_writev_blocks;
spdk_bdev_writev_blocks_with_md;
spdk_bdev_compare_blocks;
spdk_bdev_compare_blocks_with_md;
spdk_bdev_comparev_blocks;
spdk_bdev_comparev_blocks_with_md;
spdk_bdev_comparev_and_writev_blocks;
spdk_bdev_zcopy_start;
spdk_bdev_zcopy_end;
spdk_bdev_write_zeroes;
spdk_bdev_write_zeroes_blocks;
spdk_bdev_unmap;
spdk_bdev_unmap_blocks;
spdk_bdev_flush;
spdk_bdev_flush_blocks;
spdk_bdev_reset;
spdk_bdev_abort;
spdk_bdev_nvme_admin_passthru;
spdk_bdev_nvme_io_passthru;
spdk_bdev_nvme_io_passthru_md;
spdk_bdev_free_io;
spdk_bdev_queue_io_wait;
spdk_bdev_get_io_stat;
spdk_bdev_get_device_stat;
spdk_bdev_io_get_nvme_status;
spdk_bdev_io_get_nvme_fused_status;
spdk_bdev_io_get_scsi_status;
spdk_bdev_io_get_aio_status;
spdk_bdev_io_get_iovec;
spdk_bdev_io_get_md_buf;
spdk_bdev_io_get_cb_arg;
spdk_bdev_histogram_enable;
spdk_bdev_histogram_get;
spdk_bdev_get_media_events;
spdk_bdev_get_memory_domains;
spdk_bdev_readv_blocks_ext;
spdk_bdev_writev_blocks_ext;
# Public functions in bdev_module.h
spdk_bdev_register;
spdk_bdev_unregister;
spdk_bdev_unregister_by_name;
spdk_bdev_destruct_done;
spdk_bdev_module_examine_done;
spdk_bdev_module_init_done;
spdk_bdev_module_fini_done;
spdk_bdev_module_fini_start_done;
spdk_bdev_module_claim_bdev;
spdk_bdev_module_release_bdev;
spdk_bdev_alias_add;
spdk_bdev_alias_del;
spdk_bdev_alias_del_all;
spdk_bdev_get_aliases;
spdk_bdev_io_get_buf;
spdk_bdev_io_get_aux_buf;
spdk_bdev_io_put_aux_buf;
spdk_bdev_io_set_buf;
spdk_bdev_io_set_md_buf;
spdk_bdev_io_complete;
spdk_bdev_io_complete_nvme_status;
spdk_bdev_io_complete_scsi_status;
spdk_bdev_io_complete_aio_status;
spdk_bdev_io_get_thread;
spdk_bdev_io_get_io_channel;
spdk_bdev_notify_blockcnt_change;
spdk_scsi_nvme_translate;
spdk_bdev_module_list_add;
spdk_bdev_module_list_find;
spdk_bdev_part_base_get_bdev;
spdk_bdev_part_base_get_bdev_name;
spdk_bdev_part_base_get_desc;
spdk_bdev_part_base_get_tailq;
spdk_bdev_part_base_get_ctx;
spdk_bdev_part_base_free;
spdk_bdev_part_free;
spdk_bdev_part_base_hotremove;
spdk_bdev_part_base_construct_ext;
spdk_bdev_part_construct;
spdk_bdev_part_submit_request;
spdk_bdev_part_get_bdev;
spdk_bdev_part_get_base;
spdk_bdev_part_get_base_bdev;
spdk_bdev_part_get_offset_blocks;
spdk_bdev_push_media_events;
spdk_bdev_notify_media_management;
spdk_bdev_for_each_bdev_io;
# Public functions in bdev_zone.h
spdk_bdev_get_zone_size;
spdk_bdev_get_num_zones;
spdk_bdev_get_zone_id;
spdk_bdev_get_max_zone_append_size;
spdk_bdev_get_max_open_zones;
spdk_bdev_get_max_active_zones;
spdk_bdev_get_optimal_open_zones;
spdk_bdev_get_zone_info;
spdk_bdev_zone_management;
spdk_bdev_zone_append;
spdk_bdev_zone_appendv;
spdk_bdev_zone_append_with_md;
spdk_bdev_zone_appendv_with_md;
spdk_bdev_io_get_append_location;
# Everything else
local: *;
};