summaryrefslogtreecommitdiffstats
path: root/xlators/performance/quick-read/src/quick-read.h
diff options
context:
space:
mode:
authorRaghavendra G <raghavendra@gluster.com>2010-05-17 07:22:16 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-05-26 00:13:43 -0700
commitb48459eb7369bdc0eac6a516138e5095962449f3 (patch)
tree2a90ff42416cc41713effbb001967f4cc31e6f1e /xlators/performance/quick-read/src/quick-read.h
parent3047188b314b3d2a4788451d2b7ab633b8d127ff (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.h46
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 */