diff options
| author | Shehjar Tikoo <shehjart@gluster.com> | 2009-06-25 14:31:27 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2009-06-29 10:42:04 -0700 | 
| commit | 76aa99422562a500c3b82cb826ce582576065a83 (patch) | |
| tree | 65df73305affbe658fd8e70c8c4a2e7dbb26a8d4 /booster | |
| parent | 4fd96085c5a029e7be9e24e0c33b13268b290d6b (diff) | |
booster: Add new booster-specific fd-table
The reason we need a booster specific fd-table is because
the libglusterfs fd-table has come to a point where it is
optimized for libglusterfs-style of fd allocations.
This conflicts with the way booster requires fds to be allocated
so this commit brings in a re-based version of a booster-specific
fd-table written by Raghu.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
Diffstat (limited to 'booster')
| -rw-r--r-- | booster/src/Makefile.am | 4 | ||||
| -rw-r--r-- | booster/src/booster-fd.c | 291 | ||||
| -rw-r--r-- | booster/src/booster-fd.h | 72 | ||||
| -rw-r--r-- | booster/src/booster.c | 210 | 
4 files changed, 438 insertions, 139 deletions
diff --git a/booster/src/Makefile.am b/booster/src/Makefile.am index 8202e795cfe..a5158591226 100644 --- a/booster/src/Makefile.am +++ b/booster/src/Makefile.am @@ -2,8 +2,8 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance  ldpreload_PROGRAMS = glusterfs-booster.so  ldpreloaddir = $(libdir)/glusterfs/ -noinst_HEADERS = booster_fstab.h -glusterfs_booster_so_SOURCES = booster.c booster_stat.c booster_fstab.c +noinst_HEADERS = booster_fstab.h booster-fd.h +glusterfs_booster_so_SOURCES = booster.c booster_stat.c booster_fstab.c booster-fd.c  glusterfs_booster_so_CFLAGS = -I$(top_srcdir)/libglusterfsclient/src/ -D_GNU_SOURCE -D$(GF_HOST_OS) -fPIC -Wall \  	-pthread $(GF_BOOSTER_CFLAGS)  glusterfs_booster_so_CPPFLAGS = -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  \ diff --git a/booster/src/booster-fd.c b/booster/src/booster-fd.c new file mode 100644 index 00000000000..78cde44ddab --- /dev/null +++ b/booster/src/booster-fd.c @@ -0,0 +1,291 @@ +/* +  Copyright (c) 2009 Z RESEARCH, Inc. <http://www.zresearch.com> +  This file is part of GlusterFS. + +  GlusterFS is free software; you can redistribute it and/or modify +  it under the terms of the GNU General Public License as published +  by the Free Software Foundation; either version 3 of the License, +  or (at your option) any later version. + +  GlusterFS is distributed in the hope that it will be useful, but +  WITHOUT ANY WARRANTY; without even the implied warranty of +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +  General Public License for more details. + +  You should have received a copy of the GNU General Public License +  along with this program.  If not, see +  <http://www.gnu.org/licenses/>. +*/ + + + +#include "booster-fd.h" +#include <logging.h> +#include <mem-pool.h> +#include <stdlib.h> +#include <errno.h> +#include <common-utils.h> +#include <string.h> + +#include <assert.h> + +extern fd_t * +fd_ref (fd_t *fd); + +extern void +fd_unref (fd_t *fd); +/* +   Allocate in memory chunks of power of 2 starting from 1024B +   Assumes fdtable->lock is held +   */ +static inline uint +gf_roundup_power_of_two (uint nr) +{ +        uint result = 1; + +        if (nr < 0) { +                gf_log ("server-protocol/fd", +                                GF_LOG_ERROR, +                                "Negative number passed"); +                return -1; +        } +         +        while (result <= nr) +                result *= 2; + +        return result; +} + +int +booster_fdtable_expand (booster_fdtable_t *fdtable, uint nr) +{ +        fd_t    **oldfds = NULL; +        uint    oldmax_fds = -1; +        uint    cpy = 0; +        int32_t ret = -1; + +        if (fdtable == NULL || nr < 0) { +                gf_log ("fd", GF_LOG_ERROR, "invalid argument"); +                errno = EINVAL; +                ret = -1; +                goto out; +        } + +        nr /= (1024 / sizeof (fd_t *)); +        nr = gf_roundup_power_of_two (nr + 1); +        nr *= (1024 / sizeof (fd_t *)); + +        oldfds = fdtable->fds; +        oldmax_fds = fdtable->max_fds; + +        fdtable->fds = CALLOC (nr, sizeof (fd_t *)); +        if (fdtable->fds == NULL) { +                fdtable->fds = oldfds; +                oldfds = NULL; +                ret = -1; +                goto out; +        } + +        fdtable->max_fds = nr; + +        if (oldfds) { +                cpy = oldmax_fds * sizeof (fd_t *); +                memcpy (fdtable->fds, oldfds, cpy); +        } + +        ret = 0; +out: +        FREE (oldfds); + +        return ret; +} + +booster_fdtable_t * +booster_fdtable_alloc (void) +{ +        booster_fdtable_t *fdtable = NULL; +        int32_t            ret = -1; + +        fdtable = CALLOC (1, sizeof (*fdtable)); +        GF_VALIDATE_OR_GOTO ("booster-fd", fdtable, out); + +        LOCK_INIT (&fdtable->lock); + +        LOCK (&fdtable->lock); +        { +                ret = booster_fdtable_expand (fdtable, 0); +        } +        UNLOCK (&fdtable->lock); + +        if (ret == -1) { +                FREE (fdtable); +                fdtable = NULL; +        } + +out: +        return fdtable; +} + +fd_t ** +__booster_fdtable_get_all_fds (booster_fdtable_t *fdtable, uint *count) +{ +        fd_t **fds = NULL; + +        if (count == NULL) +                goto out; + +        fds = fdtable->fds; +        fdtable->fds = calloc (fdtable->max_fds, sizeof (fd_t *)); +        *count = fdtable->max_fds; + +out: +        return fds; +} + +fd_t ** +booster_fdtable_get_all_fds (booster_fdtable_t *fdtable, uint *count) +{ +        fd_t **fds = NULL; +        if (!fdtable) +                return NULL; + +        LOCK (&fdtable->lock); +        { +                fds = __booster_fdtable_get_all_fds (fdtable, count); +        } +        UNLOCK (&fdtable->lock); + +        return fds; +} + +void +booster_fdtable_destroy (booster_fdtable_t *fdtable) +{ +        fd_t                    *fd = NULL; +        fd_t                    **fds = NULL; +        uint                    fd_count = 0; +        int                     i = 0; + +        if (!fdtable) +                return; + +        LOCK (&fdtable->lock); +        { +                fds = __booster_fdtable_get_all_fds (fdtable, &fd_count); +                FREE (fdtable->fds); +        } +        UNLOCK (&fdtable->lock); + +        if (!fds) +                goto free_table; +         +        for (i = 0; i < fd_count; i++) { +                fd = fds[i]; +                if (fd != NULL) +                        fd_unref (fd); +        } +        FREE (fds); +free_table: +        LOCK_DESTROY (&fdtable->lock); +        FREE (fdtable); +} + +int +booster_fd_unused_get (booster_fdtable_t *fdtable, fd_t *fdptr, int fd) +{ +        int ret = -1; +        int error = 0; + +        if (fdtable == NULL || fdptr == NULL || fd < 0) { +                gf_log ("fd", GF_LOG_ERROR, "invalid argument"); +                errno = EINVAL; +                return -1; +        } + +        LOCK (&fdtable->lock); +        { +                while (fdtable->max_fds < fd) { +                        error = 0; +                        error = booster_fdtable_expand (fdtable, +                                                        fdtable->max_fds + 1); +                        if (error) { +                                gf_log ("booster-fd", GF_LOG_ERROR, +                                        "Cannot expand fdtable:%s", +                                        strerror (error)); +                                goto err; +                        } +                } + +                if (!fdtable->fds[fd]) { +                        fdtable->fds[fd] = fdptr; +                        fd_ref (fdptr); +                        ret = fd; +                } else +                        gf_log ("booster-fd", GF_LOG_ERROR, "Cannot allocate fd" +                                " %d (slot not empty in fdtable)", fd); +        } +err: +        UNLOCK (&fdtable->lock); + +        return ret; +} + +void +booster_fd_put (booster_fdtable_t *fdtable, int fd) +{ +        fd_t *fdptr = NULL; +        if (fdtable == NULL || fd < 0) { +                gf_log ("booster-fd", GF_LOG_ERROR, "invalid argument"); +                return; +        } + +        if (!(fd < fdtable->max_fds)) { +                gf_log ("fd", GF_LOG_ERROR, "invalid argument"); +                return; +        } + +        LOCK (&fdtable->lock); +        { +                fdptr = fdtable->fds[fd]; +                fdtable->fds[fd] = NULL; +        } +        UNLOCK (&fdtable->lock); + +        if (fdptr) +                fd_unref (fdptr); +} + +fd_t * +booster_fdptr_get (booster_fdtable_t *fdtable, int fd) +{ +        fd_t *fdptr = NULL; + +        if (fdtable == NULL || fd < 0) { +                gf_log ("booster-fd", GF_LOG_ERROR, "invalid argument"); +                errno = EINVAL; +                return NULL; +        } + +        if (!(fd < fdtable->max_fds)) { +                gf_log ("booster-fd", GF_LOG_ERROR, "invalid argument"); +                errno = EINVAL; +                return NULL; +        } + +        LOCK (&fdtable->lock); +        { +                fdptr = fdtable->fds[fd]; +                if (fdptr) +                        fd_ref (fdptr); +        } +        UNLOCK (&fdtable->lock); + +        return fdptr; +} + +void +booster_fdptr_put (fd_t *booster_fd) +{ +        if (!booster_fd) +                fd_unref (booster_fd); +} diff --git a/booster/src/booster-fd.h b/booster/src/booster-fd.h new file mode 100644 index 00000000000..43592e8255a --- /dev/null +++ b/booster/src/booster-fd.h @@ -0,0 +1,72 @@ +/* +  Copyright (c) 2009 Z RESEARCH, Inc. <http://www.zresearch.com> +  This file is part of GlusterFS. + +  GlusterFS is free software; you can redistribute it and/or modify +  it under the terms of the GNU General Public License as published +  by the Free Software Foundation; either version 3 of the License, +  or (at your option) any later version. + +  GlusterFS is distributed in the hope that it will be useful, but +  WITHOUT ANY WARRANTY; without even the implied warranty of +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +  General Public License for more details. + +  You should have received a copy of the GNU General Public License +  along with this program.  If not, see +  <http://www.gnu.org/licenses/>. +*/ + +#ifndef _BOOSTER_FD_H +#define _BOOSTER_FD_H + +#include <libglusterfsclient.h> +#include <locking.h> +#include <list.h> + +/* This struct must be updated if the fd_t in fd.h changes. + * We cannot include those headers here because unistd.h, included + * by glusterfs headers, conflicts with the syscall prototypes we + * define for booster. + */ +struct _fd { +        pid_t             pid; +	int32_t           flags; +        int32_t           refcount; +        struct list_head  inode_list; +        struct _inode    *inode; +        struct _dict     *ctx; +        gf_lock_t         lock; /* used ONLY for manipulating +                                   'struct _fd_ctx' array (_ctx).*/ +	struct _fd_ctx   *_ctx; +}; +typedef struct _fd fd_t; + + +struct _booster_fdtable { +        int             refcount; +        unsigned int    max_fds; +        gf_lock_t       lock; +        fd_t            **fds; +}; +typedef struct _booster_fdtable booster_fdtable_t; + +extern int +booster_fd_unused_get (booster_fdtable_t *fdtable, fd_t *fdptr, int fd); + +extern void +booster_fd_put (booster_fdtable_t *fdtable, int fd); + +extern fd_t * +booster_fdptr_get (booster_fdtable_t *fdtable, int fd); + +extern void +booster_fdptr_put (fd_t *fdptr); + +extern void +booster_fdtable_destroy (booster_fdtable_t *fdtable); + +booster_fdtable_t * +booster_fdtable_alloc (void); + +#endif /* #ifndef _BOOSTER_FD_H */ diff --git a/booster/src/booster.c b/booster/src/booster.c index 8dcfdc7e979..7a3da7da132 100644 --- a/booster/src/booster.c +++ b/booster/src/booster.c @@ -43,12 +43,19 @@  #include <sys/statfs.h>  #include <sys/statvfs.h>  #include <fcntl.h> +#include "booster-fd.h"  #ifndef GF_UNIT_KB  #define GF_UNIT_KB 1024  #endif +extern fd_t * +fd_ref (fd_t *fd); + +extern void +fd_unref (fd_t *fd); +  extern int pipe (int filedes[2]);  /* We define these flags so that we can remove fcntl.h from the include path.   * fcntl.h has certain defines and other lines of code that redirect the @@ -82,44 +89,6 @@ typedef enum {  struct _inode;  struct _dict; -struct _fd { -        pid_t pid; -        struct list_head inode_list; -        struct _inode *inode; -        struct _dict *ctx; -        int32_t refcount; -}; - -typedef struct _fdtable fdtable_t; -typedef struct _fd fd_t; - - -inline void  -gf_fd_put (struct _fdtable *fdtable, int64_t fd); - -struct _fd * -gf_fd_fdptr_get (struct _fdtable *fdtable, int64_t fd); - -struct _fdtable * -gf_fd_fdtable_alloc (void); - -void -gf_fd_fdtable_destroy (struct _fdtable *); - -int32_t  -gf_fd_unused_get (struct _fdtable *fdtable, struct _fd *fdptr); - -int32_t  -gf_fd_unused_get2 (struct _fdtable *fdtable, struct _fd *fdptr, int64_t fd); - -void -fd_unref (struct _fd *fd); - -fd_t * -fd_ref (struct _fd *fd); - -pid_t -getpid (void);  ssize_t  write (int fd, const void *buf, size_t count); @@ -229,7 +198,7 @@ struct booster_mount {  };  typedef struct booster_mount booster_mount_t; -static fdtable_t *booster_glfs_fdtable = NULL; +static booster_fdtable_t *booster_fdtable = NULL;  extern int booster_configure (char *confpath);  /* This is dup'ed every time VMP open/creat wants a new fd. @@ -257,39 +226,6 @@ booster_get_process_fd ()  #define BOOSTER_DEFAULT_LOG     CONFDIR"/booster.log"  #define BOOSTER_LOG_ENV_VAR     "GLUSTERFS_BOOSTER_LOG" - -static inline glusterfs_file_t -booster_get_glfs_fd (fdtable_t *fdtable, int fd) -{ -        fd_t *glfs_fd = NULL; - -        glfs_fd = gf_fd_fdptr_get (fdtable, fd); -        return glfs_fd; -} - - -static inline void -booster_put_glfs_fd (glusterfs_file_t glfs_fd) -{ -        fd_unref ((fd_t *)glfs_fd); -} - - -static inline int32_t -booster_get_unused_fd (fdtable_t *fdtable, glusterfs_file_t glfs_fd, int fd) -{ -        int32_t ret = -1; -        ret = gf_fd_unused_get2 (fdtable, (fd_t *)glfs_fd, fd); -        return ret; -} - - -static inline void -booster_put_fd (fdtable_t *fdtable, int fd) -{ -        gf_fd_put (fdtable, fd); -} -  void  do_open (int fd, const char *pathname, int flags, mode_t mode, booster_op_t op)  { @@ -382,7 +318,7 @@ do_open (int fd, const char *pathname, int flags, mode_t mode, booster_op_t op)                  goto out;          } -        if (booster_get_unused_fd (booster_glfs_fdtable, fh, fd) == -1) { +        if (booster_fd_unused_get (booster_fdtable, fh, fd) == -1) {                  goto out;          }          fh = NULL; @@ -432,7 +368,7 @@ vmp_open (const char *pathname, int flags, ...)          if (fd == -1)                  goto fh_close_out; -        if (booster_get_unused_fd (booster_glfs_fdtable, fh, fd) == -1) +        if (booster_fd_unused_get (booster_fdtable, fh, fd) == -1)                  goto realfd_close_out;          return fd; @@ -578,7 +514,7 @@ vmp_creat (const char *pathname, mode_t mode)          if (fd == -1)                  goto close_out; -        if ((booster_get_unused_fd (booster_glfs_fdtable, fh, fd)) == -1) +        if ((booster_fd_unused_get (booster_fdtable, fh, fd)) == -1)                  goto real_close_out;          return fd; @@ -634,7 +570,7 @@ pread (int fd, void *buf, size_t count, unsigned long offset)          ssize_t ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                   if (real_pread == NULL) {                          errno = ENOSYS; @@ -643,7 +579,7 @@ pread (int fd, void *buf, size_t count, unsigned long offset)                          ret = real_pread (fd, buf, count, offset);          } else {                  ret = glusterfs_pread (glfs_fd, buf, count, offset); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -656,7 +592,7 @@ pread64 (int fd, void *buf, size_t count, uint64_t offset)          ssize_t ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                   if (real_pread64 == NULL) {                          errno = ENOSYS; @@ -677,7 +613,7 @@ read (int fd, void *buf, size_t count)          int ret;          glusterfs_file_t glfs_fd; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_read == NULL) {                          errno = ENOSYS; @@ -686,7 +622,7 @@ read (int fd, void *buf, size_t count)                          ret = real_read (fd, buf, count);          } else {                  ret = glusterfs_read (glfs_fd, buf, count); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -699,7 +635,7 @@ readv (int fd, const struct iovec *vector, int count)          int ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_readv == NULL) {                          errno = ENOSYS; @@ -708,7 +644,7 @@ readv (int fd, const struct iovec *vector, int count)                          ret = real_readv (fd, vector, count);          } else {  		ret = glusterfs_readv (glfs_fd, vector, count); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -721,7 +657,7 @@ write (int fd, const void *buf, size_t count)          int ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_write == NULL) { @@ -731,7 +667,7 @@ write (int fd, const void *buf, size_t count)                          ret = real_write (fd, buf, count);          } else {                  ret = glusterfs_write (glfs_fd, buf, count); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -743,7 +679,7 @@ writev (int fd, const struct iovec *vector, int count)          int ret = 0;          glusterfs_file_t glfs_fd = 0;  -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_writev == NULL) { @@ -753,7 +689,7 @@ writev (int fd, const struct iovec *vector, int count)                          ret = real_writev (fd, vector, count);          } else {                  ret = glusterfs_writev (glfs_fd, vector, count); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -766,7 +702,7 @@ pwrite (int fd, const void *buf, size_t count, unsigned long offset)          int ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_pwrite == NULL) { @@ -776,7 +712,7 @@ pwrite (int fd, const void *buf, size_t count, unsigned long offset)                          ret = real_pwrite (fd, buf, count, offset);          } else {                  ret = glusterfs_pwrite (glfs_fd, buf, count, offset); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -789,7 +725,7 @@ pwrite64 (int fd, const void *buf, size_t count, uint64_t offset)          int ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);          if (!glfs_fd) {                  if (real_pwrite64 == NULL) { @@ -799,7 +735,7 @@ pwrite64 (int fd, const void *buf, size_t count, uint64_t offset)                          ret = real_pwrite64 (fd, buf, count, offset);          } else {                  ret = glusterfs_pwrite (glfs_fd, buf, count, offset); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret; @@ -812,12 +748,12 @@ close (int fd)          int ret = -1;          glusterfs_file_t glfs_fd = 0; -	glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +	glfs_fd = booster_fdptr_get (booster_fdtable, fd);  	if (glfs_fd) { -		booster_put_fd (booster_glfs_fdtable, fd); +		booster_fd_put (booster_fdtable, fd);  		ret = glusterfs_close (glfs_fd); -		booster_put_glfs_fd (glfs_fd); +		booster_fdptr_put (glfs_fd);  	}          ret = real_close (fd); @@ -833,10 +769,10 @@ lseek (int filedes, unsigned long offset, int whence)          int ret;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, filedes); +        glfs_fd = booster_fdptr_get (booster_fdtable, filedes);          if (glfs_fd) {                  ret = glusterfs_lseek (glfs_fd, offset, whence); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          } else {                  if (real_lseek == NULL) {                          errno = ENOSYS; @@ -856,10 +792,10 @@ lseek64 (int filedes, uint64_t offset, int whence)          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, filedes); +        glfs_fd = booster_fdptr_get (booster_fdtable, filedes);          if (glfs_fd) {                  ret = glusterfs_lseek (glfs_fd, offset, whence); -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          } else {                  if (real_lseek64 == NULL) {                          errno = ENOSYS; @@ -877,11 +813,11 @@ dup (int oldfd)          int ret = -1, new_fd = -1;          glusterfs_file_t glfs_fd = 0; -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, oldfd); +        glfs_fd = booster_fdptr_get (booster_fdtable, oldfd);          new_fd = real_dup (oldfd);          if (new_fd >=0 && glfs_fd) { -                ret = booster_get_unused_fd (booster_glfs_fdtable, glfs_fd, +                ret = booster_fd_unused_get (booster_fdtable, glfs_fd,                                               new_fd);                  fd_ref ((fd_t *)glfs_fd);                  if (ret == -1) { @@ -890,7 +826,7 @@ dup (int oldfd)          }          if (glfs_fd) { -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return new_fd; @@ -907,20 +843,20 @@ dup2 (int oldfd, int newfd)                  return newfd;          } -        old_glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, oldfd); -        new_glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, newfd); +        old_glfs_fd = booster_fdptr_get (booster_fdtable, oldfd); +        new_glfs_fd = booster_fdptr_get (booster_fdtable, newfd);          ret = real_dup2 (oldfd, newfd);           if (ret >= 0) {                  if (new_glfs_fd) {                          glusterfs_close (new_glfs_fd); -                        booster_put_glfs_fd (new_glfs_fd); -                        booster_put_fd (booster_glfs_fdtable, newfd); +                        booster_fdptr_put (new_glfs_fd); +                        booster_fd_put (booster_fdtable, newfd);                          new_glfs_fd = 0;                  }                  if (old_glfs_fd) { -                        ret = booster_get_unused_fd (booster_glfs_fdtable, +                        ret = booster_fd_unused_get (booster_fdtable,                                                       old_glfs_fd, newfd);                          fd_ref ((fd_t *)old_glfs_fd);                          if (ret == -1) { @@ -930,11 +866,11 @@ dup2 (int oldfd, int newfd)          }           if (old_glfs_fd) { -                booster_put_glfs_fd (old_glfs_fd); +                booster_fdptr_put (old_glfs_fd);          }          if (new_glfs_fd) { -                booster_put_glfs_fd (new_glfs_fd); +                booster_fdptr_put (new_glfs_fd);          }          return ret; @@ -1020,7 +956,7 @@ fchown (int fd, uid_t owner, gid_t group)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_fchown == NULL) {                          errno = ENOSYS; @@ -1029,7 +965,7 @@ fchown (int fd, uid_t owner, gid_t group)                          ret = real_fchown (fd, owner, group);          } else {                  ret = glusterfs_fchown (fh, owner, group); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }          return ret; @@ -1046,8 +982,8 @@ booster_init (void)          int     ret = -1;          int     pipefd[2]; -        booster_glfs_fdtable = gf_fd_fdtable_alloc (); -        if (!booster_glfs_fdtable) { +        booster_fdtable = booster_fdtable_alloc (); +        if (!booster_fdtable) {                  fprintf (stderr, "cannot allocate fdtable: %s\n",                           strerror (errno));  		goto err; @@ -1088,16 +1024,16 @@ err:  static void  booster_cleanup (void)  { -	/* gf_fd_fdtable_destroy (booster_glfs_fdtable);*/ -	/*for (i=0; i < booster_glfs_fdtable->max_fds; i++) { -		if (booster_glfs_fdtable->fds[i]) { -			fd_t *fd = booster_glfs_fdtable->fds[i]; +	/* gf_fd_fdtable_destroy (booster_fdtable);*/ +	/*for (i=0; i < booster_fdtable->max_fds; i++) { +		if (booster_fdtable->fds[i]) { +			fd_t *fd = booster_fdtable->fds[i];  			free (fd);			    		}  		}*/ -	free (booster_glfs_fdtable); -	booster_glfs_fdtable = NULL; +	free (booster_fdtable); +	booster_fdtable = NULL;          /*           * FIXME: there may be issues during execution of fini of individual @@ -1118,7 +1054,7 @@ fchmod (int fd, mode_t mode)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_fchmod == NULL) {                          errno = ENOSYS; @@ -1127,7 +1063,7 @@ fchmod (int fd, mode_t mode)                          ret = real_fchmod (fd, mode);          } else {                  ret = glusterfs_fchmod (fh, mode); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }          return ret; @@ -1139,7 +1075,7 @@ fsync (int fd)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_fsync == NULL) {                          errno = ENOSYS; @@ -1148,7 +1084,7 @@ fsync (int fd)                          ret = real_fsync (fd);          } else {                  ret = glusterfs_fsync (fh); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }          return ret; @@ -1160,7 +1096,7 @@ ftruncate (int fd, off_t length)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_ftruncate == NULL) {                          errno = ENOSYS; @@ -1169,7 +1105,7 @@ ftruncate (int fd, off_t length)                          ret = real_ftruncate (fd, length);          } else {                  ret = glusterfs_ftruncate (fh, length); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }          return ret; @@ -1632,7 +1568,7 @@ booster_fxstat (int ver, int fd, void *buf)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real___fxstat == NULL) {                          errno = ENOSYS; @@ -1643,7 +1579,7 @@ booster_fxstat (int ver, int fd, void *buf)                  ret = real___fxstat (ver, fd, sbuf);          } else {                  ret = glusterfs_fstat (fh, sbuf); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }  out: @@ -1657,7 +1593,7 @@ booster_fxstat64 (int ver, int fd, void *buf)          struct stat64           *sbuf = (struct stat64 *)buf;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real___fxstat64 == NULL) {                          ret = -1; @@ -1667,7 +1603,7 @@ booster_fxstat64 (int ver, int fd, void *buf)                  ret = real___fxstat64 (ver, fd, sbuf);          } else {                  ret = glusterfs_fstat (fh, (struct stat *)sbuf); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }  out: @@ -1681,7 +1617,7 @@ booster_fstat (int fd, void *buf)          int                     ret = -1;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_fstat != NULL)                          ret = real_fstat (fd, sbuf); @@ -1694,7 +1630,7 @@ booster_fstat (int fd, void *buf)                  }          } else {                  ret = glusterfs_fstat (fh, sbuf); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }  out: @@ -1708,7 +1644,7 @@ booster_fstat64 (int fd, void *buf)          struct stat64           *sbuf = (struct stat64 *)buf;          glusterfs_file_t        fh = NULL; -        fh = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        fh = booster_fdptr_get (booster_fdtable, fd);          if (!fh) {                  if (real_fstat64 != NULL)                          ret = real_fstat64 (fd, sbuf); @@ -1727,7 +1663,7 @@ booster_fstat64 (int fd, void *buf)                  }          } else {                  ret = glusterfs_fstat (fh, (struct stat *)sbuf); -                booster_put_glfs_fd (fh); +                booster_fdptr_put (fh);          }  out: @@ -2099,7 +2035,7 @@ sendfile (int out_fd, int in_fd, off_t *offset, size_t count)           * handle sendfile in booster only if in_fd corresponds to a glusterfs           * file handle            */ -        in_fh = booster_get_glfs_fd (booster_glfs_fdtable, in_fd); +        in_fh = booster_fdptr_get (booster_fdtable, in_fd);          if (!in_fh) {                  if (real_sendfile == NULL) {                          errno = ENOSYS; @@ -2109,7 +2045,7 @@ sendfile (int out_fd, int in_fd, off_t *offset, size_t count)                  }          } else {                  ret = glusterfs_sendfile (out_fd, in_fh, offset, count); -                booster_put_glfs_fd (in_fh); +                booster_fdptr_put (in_fh);          }          return ret; @@ -2125,7 +2061,7 @@ sendfile64 (int out_fd, int in_fd, off_t *offset, size_t count)           * handle sendfile in booster only if in_fd corresponds to a glusterfs           * file handle            */ -        in_fh = booster_get_glfs_fd (booster_glfs_fdtable, in_fd); +        in_fh = booster_fdptr_get (booster_fdtable, in_fd);          if (!in_fh) {                  if (real_sendfile64 == NULL) {                          errno = ENOSYS; @@ -2135,7 +2071,7 @@ sendfile64 (int out_fd, int in_fd, off_t *offset, size_t count)                  }          } else {                  ret = glusterfs_sendfile (out_fd, in_fh, offset, count); -                booster_put_glfs_fd (in_fh); +                booster_fdptr_put (in_fh);          }          return ret; @@ -2151,7 +2087,7 @@ fcntl (int fd, int cmd, ...)          struct flock     *lock = NULL;          glusterfs_file_t  glfs_fd = 0;  -        glfs_fd = booster_get_glfs_fd (booster_glfs_fdtable, fd); +        glfs_fd = booster_fdptr_get (booster_fdtable, fd);  	switch (cmd) {  	case F_DUPFD: @@ -2241,7 +2177,7 @@ fcntl (int fd, int cmd, ...)  out:          if (glfs_fd) { -                booster_put_glfs_fd (glfs_fd); +                booster_fdptr_put (glfs_fd);          }          return ret;  | 
