/* * Copyright (c) 2020 SUSE LLC * SPDX-License-Identifier: GPL-2.0-or-later * * libmultipath ABI * * libmultipath doesn't have a stable ABI in the usual sense. In particular, * the library does not attempt to ship different versions of the same symbol * for backward compatibility. * * The ABI versioning only serves to avoid linking with a non-matching ABI, to * cut down the set of exported symbols, and to describe it. * The version string is LIBMULTIPATH_$MAJOR.$MINOR.$REL. * * Policy: * * * Bump $MAJOR for incompatible changes, like: * - symbols removed * - parameter list or return values changed for existing functions * - externally visible data structures changed in incompatible ways * (like offsets of previously existing struct members) * In this case, the new version doesn't inherit the previous versions, * because the new library doesn't provide the full previous ABI any more. * All predecessors are merged into the new version. * * * Bump $MINOR for compatible changes, like adding symbols. * The new version inherits the previous ones. * * * Bump $REL to describe deviations from upstream, e.g. in * multipath-tools packages shipped by distributions. * The new version inherits the previous ones. */ /* * Symbols exported by both libmpathutil and libmultipath * libmpathutil exports just dummy symbols, intended to be overridden * by those in libmultipath. * CAUTION - the version in libmpathutil.version and libmultipath.version * must be THE SAME, otherwise the overriding will fail! */ LIBMPATHCOMMON_1.0.0 { get_multipath_config; put_multipath_config; }; LIBMULTIPATH_22.0.0 { global: /* symbols referenced by multipath and multipathd */ add_foreign; add_map_with_path; adopt_paths; alloc_multipath; alloc_multipath_layout; alloc_path; alloc_path_layout; alloc_path_with_pathinfo; change_foreign; check_alias_settings; check_daemon; checker_clear_message; checker_disable; checker_enable; checker_message; checker_name; checker_state_name; check_foreign; cleanup_bindings; cleanup_lock; coalesce_paths; count_active_paths; delete_all_foreign; delete_foreign; dm_cancel_deferred_remove; dm_enablegroup; dm_fail_path; _dm_flush_map; dm_flush_map_nopaths; dm_flush_maps; dm_geteventnr; dm_get_info; dm_get_major_minor; dm_get_maps; dm_get_multipath; dm_get_uuid; dm_is_mpath; dm_mapname; dm_map_present; dm_prereq; dm_queue_if_no_path; dm_reassign; dm_reinstate_path; dm_simplecmd_noflush; dm_switchgroup; domap; ensure_directories_exist; extract_hwe_from_path; filter_devnode; filter_path; filter_wwid; find_mp_by_alias; find_mp_by_minor; find_mp_by_str; find_mp_by_wwid; find_mpe; find_path_by_dev; find_path_by_devt; foreign_multipath_layout; foreign_path_layout; free_config; free_multipath; free_multipathvec; free_path; free_pathvec; get_multipath_layout; get_path_layout; get_pgpolicy_id; get_refwwid; get_state; get_udev_device; get_uid; get_used_hwes; get_vpd_sgio; group_by_prio; handle_bindings_file_inotify; has_dm_info; init_checkers; init_config; init_foreign; init_prio; io_err_stat_handle_pathfail; is_path_valid; libmp_dm_task_create; libmp_get_version; libmp_get_multipath_config; libmp_dm_task_run; libmp_put_multipath_config; libmp_udev_set_sync_support; libmultipath_exit; libmultipath_init; load_config; need_io_err_check; orphan_path; parse_prkey_flags; pathcount; path_discovery; path_get_tpgs; pathinfo; path_offline; print_all_paths; print_foreign_topology; _print_multipath_topology; reinstate_paths; remember_wwid; remove_map; remove_map_by_alias; remove_map_callback; remove_maps; remove_wwid; replace_wwids; reset_checker_classes; select_all_tg_pt; select_action; select_find_multipaths_timeout; select_no_path_retry; select_path_group; select_reservation_key; set_no_path_retry; set_path_removed; set_prkey; setup_map; should_multipath; skip_libmp_dm_init; snprint_blacklist_report; __snprint_config; snprint_config; snprint_devices; snprint_foreign_multipaths; snprint_foreign_paths; snprint_foreign_topology; _snprint_multipath; snprint_multipath_header; snprint_multipath_map_json; _snprint_multipath_topology; snprint_multipath_topology_json; _snprint_path; snprint_path_header; snprint_status; snprint_wildcards; stop_io_err_stat_thread; store_path; store_pathinfo; sync_map_state; sysfs_get_size; sysfs_is_multipathed; trigger_path_udev_change; trigger_paths_udev_change; udev; uevent_dispatch; uevent_get_dm_str; uevent_get_env_positive_int; uevent_is_mpath; uevent_listen; uninit_config; update_mpp_paths; update_multipath_strings; update_multipath_table; update_queue_mode_add_path; update_queue_mode_del_path; valid_alias; verify_paths; /* checkers */ checker_is_sync; sg_read; start_checker_thread; /* prioritizers */ get_asymmetric_access_state; get_prio_timeout_ms; get_target_port_group; get_target_port_group_support; libmp_nvme_ana_log; libmp_nvme_get_nsid; libmp_nvme_identify_ns; log_nvme_errcode; nvme_id_ctrl_ana; set_wakeup_fn; snprint_host_wwnn; snprint_host_wwpn; snprint_path_serial; snprint_tgt_wwnn; snprint_tgt_wwpn; sysfs_attr_set_value; sysfs_attr_get_value; sysfs_get_asymmetric_access_state; /* foreign */ local: *; };