diff options
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 6de040dd6e6..7207a33a554 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 */  | 
