1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
Zdenek Kabelac 2021-04-03 21:49:37 +02:00
parent 12949ea886
commit a8480f0f6e
5 changed files with 47 additions and 25 deletions

View File

@ -247,11 +247,11 @@ bad:
* Maintain backward compatibility with older versions that did not * Maintain backward compatibility with older versions that did not
* accept a 'min_num_bits' argument to dm_bitset_parse_list(). * accept a 'min_num_bits' argument to dm_bitset_parse_list().
*/ */
DM_EXPORT_SYMBOL(dm_bitset_parse_list, 1_02_129)
dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem); dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem);
dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem) dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem)
{ {
return dm_bitset_parse_list(str, mem, 0); return dm_bitset_parse_list(str, mem, 0);
} }
DM_EXPORT_SYMBOL(dm_bitset_parse_list, 1_02_129);
#endif #endif

View File

@ -709,7 +709,8 @@ int dm_format_dev(char *buf, int bufsize, uint32_t dev_major,
return 1; return 1;
} }
int dm_task_get_info(struct dm_task *dmt, struct dm_info *info) DM_EXPORT_NEW_SYMBOL(int, dm_task_get_info, 1_02_97)
(struct dm_task *dmt, struct dm_info *info)
{ {
if (!dmt->dmi.v4) if (!dmt->dmi.v4)
return 0; return 0;
@ -2210,8 +2211,8 @@ void dm_lib_exit(void)
* no code in this file accidentally calls it. * no code in this file accidentally calls it.
*/ */
DM_EXPORT_SYMBOL_BASE(dm_task_get_info)
int dm_task_get_info_base(struct dm_task *dmt, struct dm_info *info); int dm_task_get_info_base(struct dm_task *dmt, struct dm_info *info);
DM_EXPORT_SYMBOL_BASE(dm_task_get_info);
int dm_task_get_info_base(struct dm_task *dmt, struct dm_info *info) int dm_task_get_info_base(struct dm_task *dmt, struct dm_info *info)
{ {
struct dm_info new_info; struct dm_info new_info;

View File

@ -3311,15 +3311,16 @@ int dm_tree_node_add_raid_target_with_params_v2(struct dm_tree_node *node,
return 1; return 1;
} }
int dm_tree_node_add_cache_target(struct dm_tree_node *node, DM_EXPORT_NEW_SYMBOL(int, dm_tree_node_add_cache_target, 1_02_138)
uint64_t size, (struct dm_tree_node *node,
uint64_t feature_flags, /* DM_CACHE_FEATURE_* */ uint64_t size,
const char *metadata_uuid, uint64_t feature_flags, /* DM_CACHE_FEATURE_* */
const char *data_uuid, const char *metadata_uuid,
const char *origin_uuid, const char *data_uuid,
const char *policy_name, const char *origin_uuid,
const struct dm_config_node *policy_settings, const char *policy_name,
uint32_t data_block_size) const struct dm_config_node *policy_settings,
uint32_t data_block_size)
{ {
struct dm_config_node *cn; struct dm_config_node *cn;
struct load_segment *seg; struct load_segment *seg;
@ -3858,8 +3859,8 @@ void dm_tree_node_set_callback(struct dm_tree_node *dnode,
*/ */
/* Backward compatible dm_tree_node_size_changed() implementations. */ /* Backward compatible dm_tree_node_size_changed() implementations. */
DM_EXPORT_SYMBOL_BASE(dm_tree_node_size_changed)
int dm_tree_node_size_changed_base(const struct dm_tree_node *dnode); int dm_tree_node_size_changed_base(const struct dm_tree_node *dnode);
DM_EXPORT_SYMBOL_BASE(dm_tree_node_size_changed);
int dm_tree_node_size_changed_base(const struct dm_tree_node *dnode) int dm_tree_node_size_changed_base(const struct dm_tree_node *dnode)
{ {
/* Base does not make difference between smaller and bigger */ /* Base does not make difference between smaller and bigger */
@ -3874,6 +3875,7 @@ int dm_tree_node_size_changed_base(const struct dm_tree_node *dnode)
* the new function dm_tree_node_add_cache_target which detects unknown * the new function dm_tree_node_add_cache_target which detects unknown
* feature flags and returns error for them. * feature flags and returns error for them.
*/ */
DM_EXPORT_SYMBOL_BASE(dm_tree_node_add_cache_target)
int dm_tree_node_add_cache_target_base(struct dm_tree_node *node, int dm_tree_node_add_cache_target_base(struct dm_tree_node *node,
uint64_t size, uint64_t size,
uint64_t feature_flags, /* DM_CACHE_FEATURE_* */ uint64_t feature_flags, /* DM_CACHE_FEATURE_* */
@ -3883,7 +3885,6 @@ int dm_tree_node_add_cache_target_base(struct dm_tree_node *node,
const char *policy_name, const char *policy_name,
const struct dm_config_node *policy_settings, const struct dm_config_node *policy_settings,
uint32_t data_block_size); uint32_t data_block_size);
DM_EXPORT_SYMBOL_BASE(dm_tree_node_add_cache_target);
int dm_tree_node_add_cache_target_base(struct dm_tree_node *node, int dm_tree_node_add_cache_target_base(struct dm_tree_node *node,
uint64_t size, uint64_t size,
uint64_t feature_flags, uint64_t feature_flags,

View File

@ -2011,10 +2011,11 @@ out:
return r; return r;
} }
int dm_stats_create_region(struct dm_stats *dms, uint64_t *region_id, DM_EXPORT_NEW_SYMBOL(int, dm_stats_create_region, 1_02_107)
uint64_t start, uint64_t len, int64_t step, (struct dm_stats *dms, uint64_t *region_id,
int precise, struct dm_histogram *bounds, uint64_t start, uint64_t len, int64_t step,
const char *program_id, const char *user_data) int precise, struct dm_histogram *bounds,
const char *program_id, const char *user_data)
{ {
char *hist_arg = NULL; char *hist_arg = NULL;
int r = 0; int r = 0;
@ -2037,6 +2038,7 @@ out:
return r; return r;
} }
static void _stats_clear_group_regions(struct dm_stats *dms, uint64_t group_id) static void _stats_clear_group_regions(struct dm_stats *dms, uint64_t group_id)
{ {
struct dm_stats_group *group; struct dm_stats_group *group;
@ -5070,6 +5072,8 @@ int dm_stats_start_filemapd(int fd, uint64_t group_id, const char *path,
*/ */
#if defined(GNU_SYMVER) #if defined(GNU_SYMVER)
DM_EXPORT_SYMBOL(dm_stats_create_region, 1_02_106)
int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id, int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id,
uint64_t start, uint64_t len, int64_t step, uint64_t start, uint64_t len, int64_t step,
int precise, const char *program_id, int precise, const char *program_id,
@ -5083,8 +5087,8 @@ int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id,
return _stats_create_region(dms, region_id, start, len, step, precise, return _stats_create_region(dms, region_id, start, len, step, precise,
NULL, program_id, aux_data); NULL, program_id, aux_data);
} }
DM_EXPORT_SYMBOL(dm_stats_create_region, 1_02_106);
DM_EXPORT_SYMBOL(dm_stats_create_region, 1_02_104)
int dm_stats_create_region_v1_02_104(struct dm_stats *dms, uint64_t *region_id, int dm_stats_create_region_v1_02_104(struct dm_stats *dms, uint64_t *region_id,
uint64_t start, uint64_t len, int64_t step, uint64_t start, uint64_t len, int64_t step,
const char *program_id, const char *aux_data); const char *program_id, const char *aux_data);
@ -5096,5 +5100,4 @@ int dm_stats_create_region_v1_02_104(struct dm_stats *dms, uint64_t *region_id,
return _stats_create_region(dms, region_id, start, len, step, 0, NULL, return _stats_create_region(dms, region_id, start, len, step, 0, NULL,
program_id, aux_data); program_id, aux_data);
} }
DM_EXPORT_SYMBOL(dm_stats_create_region, 1_02_104);
#endif #endif

View File

@ -22,6 +22,7 @@
/* /*
* Symbol export control macros * Symbol export control macros
* *
* DM_EXPORT_NEW_SYMBOL(rettype, func, ver)
* DM_EXPORT_SYMBOL(func,ver) * DM_EXPORT_SYMBOL(func,ver)
* DM_EXPORT_SYMBOL_BASE(func,ver) * DM_EXPORT_SYMBOL_BASE(func,ver)
* *
@ -40,19 +41,19 @@
* compatibility version should be enclosed in '#if defined(GNU_SYMVER)', * compatibility version should be enclosed in '#if defined(GNU_SYMVER)',
* for example: * for example:
* *
* int dm_foo(int bar) * DM_EXPORT_NEW_SYMBOL(int, dm_foo, 1_02_107)(int bar)
* { * {
* return bar; * return bar;
* } * }
* *
* #if defined(__GNUC__) * #if defined(GNU_SYMVER)
* // Backward compatible dm_foo() version 1.02.104 * // Backward compatible dm_foo() version 1.02.104
* DM_EXPORT_SYMBOL(dm_foo,1_02_104)
* int dm_foo_v1_02_104(void); * int dm_foo_v1_02_104(void);
* int dm_foo_v1_02_104(void) * int dm_foo_v1_02_104(void)
* { * {
* return 0; * return 0;
* } * }
* DM_EXPORT_SYMBOL(dm_foo,1_02_104)
* #endif * #endif
* *
* A prototype for the compatibility version is required as these * A prototype for the compatibility version is required as these
@ -63,11 +64,27 @@
* versioning: it must never be used for new symbols. * versioning: it must never be used for new symbols.
*/ */
#if defined(GNU_SYMVER) #if defined(GNU_SYMVER)
# ifdef __has_attribute
# if __has_attribute(symver)
# define DM_EXPORT_NEW_SYMBOL(rettype, func, ver) \
__attribute__((__symver__( #func "@@DM_" #ver ))) \
__typeof__(func) func ##_v ##ver; \
rettype func ##_v ##ver
# define DM_EXPORT_SYMBOL(func, ver) \
__attribute__((__symver__( #func "@DM_" #ver )))
# define DM_EXPORT_SYMBOL_BASE(func) \
__attribute__((__symver__( #func "@Base" )))
# endif
# endif
#ifndef DM_EXPORT_NEW_SYMBOL
#define DM_EXPORT_NEW_SYMBOL(rettype, func, ver) rettype func
#define DM_EXPORT_SYMBOL(func, ver) \ #define DM_EXPORT_SYMBOL(func, ver) \
__asm__(".symver " #func "_v" #ver ", " #func "@DM_" #ver ) __asm__(".symver " #func "_v" #ver ", " #func "@DM_" #ver );
#define DM_EXPORT_SYMBOL_BASE(func) \ #define DM_EXPORT_SYMBOL_BASE(func) \
__asm__(".symver " #func "_base, " #func "@Base" ) __asm__(".symver " #func "_base, " #func "@Base" );
#endif
#else #else
#define DM_EXPORT_NEW_SYMBOL(rettype, func, ver) rettype func
#define DM_EXPORT_SYMBOL(func, ver) #define DM_EXPORT_SYMBOL(func, ver)
#define DM_EXPORT_SYMBOL_BASE(func) #define DM_EXPORT_SYMBOL_BASE(func)
#endif #endif