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>
171 lines
4.4 KiB
Plaintext
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: *;
|
|
};
|