diff options
Diffstat (limited to 'xlators/performance/quick-read/src/quick-read.h')
-rw-r--r-- | xlators/performance/quick-read/src/quick-read.h | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/xlators/performance/quick-read/src/quick-read.h b/xlators/performance/quick-read/src/quick-read.h index 7562f6e65af..8bf966c6397 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> #define GLUSTERFS_CONTENT_KEY "glusterfs.content" @@ -57,6 +58,7 @@ 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; @@ -65,18 +67,53 @@ 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 stat 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 */ |