summaryrefslogtreecommitdiffstats
path: root/xlators/performance/quick-read/src/quick-read.h
diff options
context:
space:
mode:
authorAnand Avati <avati@redhat.com>2013-01-18 14:04:23 -0800
committerAnand Avati <avati@redhat.com>2013-01-28 12:35:57 -0800
commitcc96adbe4604ea5fd462d8db77486c2f963baf43 (patch)
tree40d5ea5d0e04539c3413f38481d9b9854d52b6c4 /xlators/performance/quick-read/src/quick-read.h
parent99e63168c498cf57f3f8fabab1d2b86a4ea639ce (diff)
quick-read: refactor
- peel out 'open behind' functionality into a separate translator - issue where, if file size had grown by revalidate, data was not flushed - removed unnecessary acquistion of table->lock (e.g in qr_lookup()) - keep inode ctx persistent, prune only data (effectively changing the order of lock acquisition from INODE -> TABLE) - validation with readdirplus - use variable size iobufs to simply cached reads Change-Id: If1586d0298fd1697ddff9fd7008efb3d286d436a BUG: 846240 Signed-off-by: Anand Avati <avati@redhat.com> Reviewed-on: http://review.gluster.org/4403 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators/performance/quick-read/src/quick-read.h')
-rw-r--r--xlators/performance/quick-read/src/quick-read.h57
1 files changed, 7 insertions, 50 deletions
diff --git a/xlators/performance/quick-read/src/quick-read.h b/xlators/performance/quick-read/src/quick-read.h
index 10a04e79..6f0a0541 100644
--- a/xlators/performance/quick-read/src/quick-read.h
+++ b/xlators/performance/quick-read/src/quick-read.h
@@ -34,48 +34,20 @@
#include <fnmatch.h>
#include "quick-read-mem-types.h"
-struct qr_fd_ctx {
- char opened;
- char disabled;
- char open_in_transit;
- char *path;
- int flags;
- int wbflags;
- struct list_head waiting_ops;
- gf_lock_t lock;
- struct list_head inode_list;
- fd_t *fd;
- dict_t *xdata;
-};
-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;
- int32_t op_ret;
- int32_t op_errno;
- uint32_t open_count;
- call_stub_t *stub;
- struct list_head list;
- gf_lock_t lock;
-};
-typedef struct qr_local qr_local_t;
struct qr_inode {
- dict_t *xattr;
- inode_t *inode;
+ void *data;
+ size_t size;
int priority;
- struct iatt stbuf;
- struct timeval tv;
+ uint32_t ia_mtime;
+ uint32_t ia_mtime_nsec;
+ struct iatt buf;
+ struct timeval last_refresh;
struct list_head lru;
- struct list_head fd_list;
- struct list_head unlinked_dentries;
};
typedef struct qr_inode qr_inode_t;
+
struct qr_priority {
char *pattern;
int32_t priority;
@@ -105,20 +77,5 @@ struct qr_private {
};
typedef struct qr_private qr_private_t;
-struct qr_unlink_ctx {
- struct list_head list;
- qr_fd_ctx_t *fdctx;
- char need_open;
-};
-typedef struct qr_unlink_ctx qr_unlink_ctx_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 */