diff options
Diffstat (limited to 'xlators/performance/quick-read/src/quick-read.h')
| -rw-r--r-- | xlators/performance/quick-read/src/quick-read.h | 138 |
1 files changed, 55 insertions, 83 deletions
diff --git a/xlators/performance/quick-read/src/quick-read.h b/xlators/performance/quick-read/src/quick-read.h index 8bf966c6397..20fcc70b3a7 100644 --- a/xlators/performance/quick-read/src/quick-read.h +++ b/xlators/performance/quick-read/src/quick-read.h @@ -1,119 +1,91 @@ /* - Copyright (c) 2009-2010 Gluster, Inc. <http://www.gluster.com> + Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.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/>. + This file is licensed to you under your choice of the GNU Lesser + General Public License, version 3 or any later version (LGPLv3 or + later), or the GNU General Public License, version 2 (GPLv2), in all + cases as published by the Free Software Foundation. */ #ifndef __QUICK_READ_H #define __QUICK_READ_H -#ifndef _CONFIG_H -#define _CONFIG_H -#include "config.h" -#endif - -#include "glusterfs.h" -#include "logging.h" -#include "dict.h" -#include "xlator.h" -#include "list.h" -#include "compat.h" -#include "compat-errno.h" -#include "common-utils.h" -#include "call-stub.h" -#include "defaults.h" +#include <glusterfs/glusterfs.h> +#include <glusterfs/logging.h> +#include <glusterfs/dict.h> +#include <glusterfs/xlator.h> +#include <glusterfs/list.h> +#include <glusterfs/compat.h> +#include <glusterfs/compat-errno.h> +#include <glusterfs/common-utils.h> +#include <glusterfs/call-stub.h> +#include <glusterfs/defaults.h> #include <libgen.h> #include <sys/time.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fnmatch.h> - -#define GLUSTERFS_CONTENT_KEY "glusterfs.content" - -struct qr_fd_ctx { - char opened; - char disabled; - char open_in_transit; - char *path; - int flags; - struct list_head waiting_ops; - gf_lock_t lock; -}; -typedef struct qr_fd_ctx qr_fd_ctx_t; - -struct qr_local { - char is_open; - char just_validated; - char *path; - fd_t *fd; - int open_flags; - int32_t op_ret; - int32_t op_errno; - call_stub_t *stub; -}; -typedef struct qr_local qr_local_t; +#include "quick-read-mem-types.h" struct qr_inode { - dict_t *xattr; - inode_t *inode; - int priority; - struct stat stbuf; - struct timeval tv; - struct list_head lru; + void *data; + size_t size; + int priority; + uint32_t ia_mtime; + uint32_t ia_mtime_nsec; + uint32_t ia_ctime; + uint32_t ia_ctime_nsec; + uint32_t gen_rollover; + struct iatt buf; + time_t last_refresh; + struct list_head lru; + uint64_t gen; + uint64_t invalidation_time; }; typedef struct qr_inode qr_inode_t; struct qr_priority { - char *pattern; - int32_t priority; - struct list_head list; + char *pattern; + int32_t priority; + struct list_head list; }; typedef struct qr_priority qr_priority_t; struct qr_conf { - uint64_t max_file_size; - int32_t cache_timeout; - uint64_t cache_size; - int max_pri; - struct list_head priority_list; + uint64_t max_file_size; + int32_t cache_timeout; + uint64_t cache_size; + int max_pri; + gf_boolean_t qr_invalidation; + gf_boolean_t ctime_invalidation; + struct list_head priority_list; }; typedef struct qr_conf qr_conf_t; struct qr_inode_table { - uint64_t cache_used; - struct list_head *lru; - gf_lock_t lock; + uint64_t cache_used; + struct list_head *lru; + gf_lock_t lock; }; typedef struct qr_inode_table qr_inode_table_t; +struct qr_statistics { + gf_atomic_t cache_hit; + gf_atomic_t cache_miss; + gf_atomic_t file_data_invals; /* No. of invalidates received from upcall */ + gf_atomic_t files_cached; +}; + struct qr_private { - qr_conf_t conf; - qr_inode_table_t table; + qr_conf_t conf; + qr_inode_table_t table; + time_t last_child_down; + gf_lock_t lock; + struct qr_statistics qr_counter; + gf_atomic_int32_t generation; }; typedef struct qr_private qr_private_t; -void qr_local_free (qr_local_t *local); - -#define QR_STACK_UNWIND(op, frame, params ...) do { \ - qr_local_t *__local = frame->local; \ - frame->local = NULL; \ - STACK_UNWIND_STRICT (op, frame, params); \ - qr_local_free (__local); \ -} while (0) - - #endif /* #ifndef __QUICK_READ_H */ |
