diff options
| author | Raghavendra G <raghavendra@gluster.com> | 2009-12-03 21:46:52 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2009-12-04 01:46:30 -0800 | 
| commit | 4db7a358a294e11568ef818e64d5b3f37176609b (patch) | |
| tree | 8c9b934818be16e60190269009c174286ac70433 /xlators/performance/stat-prefetch/src/stat-prefetch.c | |
| parent | 58535b168ca9d65a5c5018f89882d7c18d8f15fe (diff) | |
performance/stat-prefetch: refactor sp_lookup_cbk to use sp_update_inode_ctx.
Signed-off-by: Raghavendra G <raghavendra@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 221 (stat prefetch implementation)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=221
Diffstat (limited to 'xlators/performance/stat-prefetch/src/stat-prefetch.c')
| -rw-r--r-- | xlators/performance/stat-prefetch/src/stat-prefetch.c | 39 | 
1 files changed, 10 insertions, 29 deletions
diff --git a/xlators/performance/stat-prefetch/src/stat-prefetch.c b/xlators/performance/stat-prefetch/src/stat-prefetch.c index e4dedb5ada4..30a3f9b060c 100644 --- a/xlators/performance/stat-prefetch/src/stat-prefetch.c +++ b/xlators/performance/stat-prefetch/src/stat-prefetch.c @@ -629,14 +629,13 @@ sp_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, inode_t *inode,                 struct stat *buf, dict_t *dict, struct stat *postparent)  { -        sp_inode_ctx_t      *inode_ctx   = NULL; -        uint64_t             value       = 0;          int                  ret         = 0;          struct list_head     waiting_ops = {0, };          call_stub_t         *stub        = NULL, *tmp = NULL;          sp_local_t          *local       = NULL;          sp_cache_t          *cache       = NULL;          int                  need_unwind = 0; +        char                 looked_up   = 0, lookup_in_progress = 0;          INIT_LIST_HEAD (&waiting_ops); @@ -663,36 +662,18 @@ sp_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if (local->is_lookup)                  need_unwind = 1; -        ret = inode_ctx_get (local->loc.inode, this, &value); -        if (ret == 0) { -                inode_ctx = (sp_inode_ctx_t *)(long)value; -                if (inode_ctx == NULL) { -                        op_ret = -1; -                        op_errno = EINVAL; -                        goto out; -                } - -                LOCK (&inode_ctx->lock); -                { -                        inode_ctx->op_ret = op_ret; -                        inode_ctx->op_errno = op_errno; -                        inode_ctx->looked_up = 1; -                        inode_ctx->lookup_in_progress = 0; -                        if ((op_ret == 0) && S_ISDIR (buf->st_mode)) { -                                memcpy (&inode_ctx->stbuf, buf, -                                        sizeof (*buf)); -                        } -                        list_splice_init (&inode_ctx->waiting_ops, -                                          &waiting_ops); -                } -                UNLOCK (&inode_ctx->lock); +        lookup_in_progress = 0; +        looked_up = 1; +        ret = sp_update_inode_ctx (this, local->loc.inode, &op_ret, &op_errno, +                                   &lookup_in_progress, &looked_up, buf, +                                   &waiting_ops, &op_errno); -                list_for_each_entry_safe (stub, tmp, &waiting_ops, list) { -                        list_del_init (&stub->list); -                        call_resume (stub); -                } +        list_for_each_entry_safe (stub, tmp, &waiting_ops, list) { +                list_del_init (&stub->list); +                call_resume (stub);          } +  out:          if (need_unwind) {                  SP_STACK_UNWIND (lookup, frame, op_ret, op_errno, inode, buf,  | 
