From d7ccdb33c2e84bab25bf0898866104f8a85b4217 Mon Sep 17 00:00:00 2001 From: Kinglong Mee Date: Wed, 30 Aug 2017 17:54:09 +0800 Subject: gfapi: adds a glfs_mem_header for exported memory glfs_free releases different types of data depends on memory type. Drop the depends of memory type of memory accounting, new macro GLFS_CALLOC/GLFS_MALLOC/GLFS_REALLOC/GLFS_FREE are added to support assign release function dynamically, it adds a separate memory header named glfs_mem_header for gfapi. Updates: #312 Change-Id: Ie608e5227cbaa05d3f4681a515e83a50d5b17c3f Signed-off-by: Kinglong Mee Reviewed-on: https://review.gluster.org/18092 Smoke: Gluster Build System Reviewed-by: Niels de Vos Tested-by: Niels de Vos Reviewed-by: Jeff Darcy CentOS-regression: Gluster Build System --- libglusterfs/src/mem-pool.c | 33 --------------------------------- 1 file changed, 33 deletions(-) (limited to 'libglusterfs/src/mem-pool.c') diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c index 328c8071e29..4d2c324baa2 100644 --- a/libglusterfs/src/mem-pool.c +++ b/libglusterfs/src/mem-pool.c @@ -328,39 +328,6 @@ free: FREE (ptr); } - -/* - * Based on the mem-type that is used for the allocation, GF_FREE can be - * called, or something more intelligent for the structure can be done. - * - * NOTE: this will not work for allocations from a memory pool. It never did, - * because those allocations never set the type in the first place. Any caller - * that relies on knowing whether a particular type was allocated via a pool or - * not is *BROKEN*, or will be any time either this module or the module - * "owning" the type changes. The proper way to handle this, assuming the - * caller is not smart enough to call a type-specific free function themselves, - * would be to create a callback interface where destructors for specific types - * can be registered so that code *here* (GF_FREE, mem_put, etc.) can do the - * right thing. That allows type-specific behavior without creating the kind - * of fragile coupling that we have now. - */ -int -gf_get_mem_type (void *ptr) -{ - struct mem_header *header = NULL; - - if (!ptr || !THIS->ctx->mem_acct_enable) - return 0; - - header = (struct mem_header *) (ptr - GF_MEM_HEADER_SIZE); - - /* Possible corruption, assert here */ - GF_ASSERT (GF_MEM_HEADER_MAGIC == header->magic); - - return header->type; -} - - #define POOL_SMALLEST 7 /* i.e. 128 */ #define POOL_LARGEST 20 /* i.e. 1048576 */ #define NPOOLS (POOL_LARGEST - POOL_SMALLEST + 1) -- cgit