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/src/booster-fd.h | |
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/src/booster-fd.h')
-rw-r--r-- | booster/src/booster-fd.h | 72 |
1 files changed, 72 insertions, 0 deletions
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 */ |