diff options
author | Raghavendra G <raghavendra@gluster.com> | 2010-05-17 07:22:16 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2010-05-26 00:13:43 -0700 |
commit | b48459eb7369bdc0eac6a516138e5095962449f3 (patch) | |
tree | 2a90ff42416cc41713effbb001967f4cc31e6f1e /xlators/performance/quick-read/src/quick-read.h | |
parent | 3047188b314b3d2a4788451d2b7ab633b8d127ff (diff) |
performance/quick-read: implement an upper size limit for the cache.
Signed-off-by: Raghavendra G <raghavendra@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 723 (enhancements to quick read)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=723
Diffstat (limited to 'xlators/performance/quick-read/src/quick-read.h')
-rw-r--r-- | xlators/performance/quick-read/src/quick-read.h | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/xlators/performance/quick-read/src/quick-read.h b/xlators/performance/quick-read/src/quick-read.h index 6de040dd6..7207a33a5 100644 --- a/xlators/performance/quick-read/src/quick-read.h +++ b/xlators/performance/quick-read/src/quick-read.h @@ -40,6 +40,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> +#include <fnmatch.h> #include "quick-read-mem-types.h" #define GLUSTERFS_CONTENT_KEY "glusterfs.content" @@ -58,6 +59,7 @@ typedef struct qr_fd_ctx qr_fd_ctx_t; struct qr_local { char is_open; + char *path; char just_validated; fd_t *fd; int open_flags; @@ -67,18 +69,52 @@ struct qr_local { }; typedef struct qr_local qr_local_t; -struct qr_file { +struct qr_inode { dict_t *xattr; + inode_t *inode; + int priority; struct iatt stbuf; struct timeval tv; - gf_lock_t lock; + struct list_head lru; +}; +typedef struct qr_inode qr_inode_t; + +struct qr_priority { + char *pattern; + int32_t priority; + struct list_head list; }; -typedef struct qr_file qr_file_t; +typedef struct qr_priority qr_priority_t; struct qr_conf { - uint64_t max_file_size; - int32_t cache_timeout; + uint64_t max_file_size; + int32_t cache_timeout; + uint64_t cache_size; + int max_pri; + 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; +}; +typedef struct qr_inode_table qr_inode_table_t; + +struct qr_private { + qr_conf_t conf; + qr_inode_table_t table; +}; +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 */ |