diff options
author | Anand Avati <avati@redhat.com> | 2013-01-18 14:04:23 -0800 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-01-28 12:35:57 -0800 |
commit | cc96adbe4604ea5fd462d8db77486c2f963baf43 (patch) | |
tree | 40d5ea5d0e04539c3413f38481d9b9854d52b6c4 /xlators/performance/quick-read/src/quick-read.h | |
parent | 99e63168c498cf57f3f8fabab1d2b86a4ea639ce (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.h | 57 |
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 10a04e79c14..6f0a0541731 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 */ |