diff options
| author | Kinglong Mee <mijinlong@open-fs.com> | 2017-08-30 17:54:09 +0800 | 
|---|---|---|
| committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-09-01 15:32:55 +0000 | 
| commit | d7ccdb33c2e84bab25bf0898866104f8a85b4217 (patch) | |
| tree | 451568625f26dc732e52c318f414e777c8b2e19a /api/src/glfs-fops.c | |
| parent | 75223c0a1b3c7bd65bb0c59449ed1fb0663cfdd3 (diff) | |
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 <mijinlong@open-fs.com>
Reviewed-on: https://review.gluster.org/18092
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Tested-by: Niels de Vos <ndevos@redhat.com>
Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'api/src/glfs-fops.c')
| -rw-r--r-- | api/src/glfs-fops.c | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index c8ddeea196e..e6ed07a68a9 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -4104,8 +4104,8 @@ glfs_realpath_common (struct glfs *fs, const char *path, char *resolved_path,                                  "glfs_realpath()");                  }          } else { -                retpath = allocpath = GF_CALLOC (1, PATH_MAX + 1, -                                                 glfs_mt_realpath_t); +                retpath = allocpath = GLFS_CALLOC (1, PATH_MAX + 1, NULL, +                                                   glfs_mt_realpath_t);          }  	if (!retpath) { @@ -4140,7 +4140,7 @@ out:                  if (warn_deprecated && allocpath)                          free (allocpath);                  else if (allocpath) -                        GF_FREE (allocpath); +                        GLFS_FREE (allocpath);                  retpath = NULL;  	} @@ -4619,6 +4619,14 @@ invalid_fs:          return ret;  } +static void glfs_release_xreaddirp_stat (void *ptr) +{ +        struct glfs_xreaddirp_stat *to_free = ptr; + +        if (to_free->object) +                glfs_h_close (to_free->object); +} +  /*   * Given glfd of a directory, this function does readdirp and returns   * xstat along with dirents. @@ -4652,8 +4660,9 @@ pub_glfs_xreaddirplus_r (struct glfs_fd *glfd, uint32_t flags,          if (!buf)                  goto out; -        xstat = GF_CALLOC(1, sizeof(struct glfs_xreaddirp_stat), -                          glfs_mt_xreaddirp_stat_t); +        xstat = GLFS_CALLOC(1, sizeof(struct glfs_xreaddirp_stat), +                            glfs_release_xreaddirp_stat, +                            glfs_mt_xreaddirp_stat_t);          if (!xstat)                  goto out; @@ -4677,7 +4686,7 @@ pub_glfs_xreaddirplus_r (struct glfs_fd *glfd, uint32_t flags,                  *xstat_p = NULL;                  /* free xstat as applications shall not be using it */ -                glfs_free (xstat); +                GLFS_FREE (xstat);                  goto out;          } @@ -4728,7 +4737,7 @@ out:                          strerror(errno));                  if (xstat) -                        glfs_free (xstat); +                        GLFS_FREE (xstat);          }          __GLFS_EXIT_FS;  | 
