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 --- api/src/glfs-handleops.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'api/src/glfs-handleops.c') diff --git a/api/src/glfs-handleops.c b/api/src/glfs-handleops.c index 4180f5cf777..65b2b6a467c 100644 --- a/api/src/glfs-handleops.c +++ b/api/src/glfs-handleops.c @@ -1987,6 +1987,14 @@ out: return ret; } +static void glfs_release_upcall (void *ptr) +{ + struct glfs_upcall *to_free = ptr; + + if (to_free->event) + to_free->free_event (to_free->event); +} + /* * This API is used to poll for upcall events stored in the upcall list. * Current users of this API is NFS-Ganesha. Incase of any event received, it @@ -2068,8 +2076,9 @@ pub_glfs_h_poll_upcall (struct glfs *fs, struct glfs_upcall **up_arg) if (upcall_data) { switch (upcall_data->event_type) { case GF_UPCALL_CACHE_INVALIDATION: - *up_arg = GF_CALLOC (1, sizeof (struct gf_upcall), - glfs_mt_upcall_entry_t); + *up_arg = GLFS_CALLOC (1, sizeof (struct gf_upcall), + glfs_release_upcall, + glfs_mt_upcall_entry_t); if (!*up_arg) { errno = ENOMEM; break; /* goto free u_list */ @@ -2088,7 +2097,7 @@ pub_glfs_h_poll_upcall (struct glfs *fs, struct glfs_upcall **up_arg) if ((*up_arg)->reason == GLFS_UPCALL_EVENT_NULL) errno = ENOENT; - GF_FREE (*up_arg); + GLFS_FREE (*up_arg); *up_arg = NULL; } break; -- cgit