diff options
| author | Amar Tumballi <amarts@redhat.com> | 2012-03-05 23:54:51 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vijay@gluster.com> | 2012-03-07 09:24:03 -0800 | 
| commit | ac568d561ba15a148d8de6a3d4431714bce230f6 (patch) | |
| tree | a9f25d89fc6c81b4effd6c9d870dfc39cf6aec2e | |
| parent | ebbc6e802bbffc9c0fd03db1cafefcaaca3a0f05 (diff) | |
cluster/distribute: send proper 'dict' in readdirp()
if we do the STACK_WIND from readdirp_cbk(), we were not sending
the right dictionary which made our linkfile determination a
failure.
Change-Id: Ie3f26748608f1a81123fe475d8a42bf2717475c3
Signed-off-by: Amar Tumballi <amarts@redhat.com>
BUG: 799887
Reviewed-on: http://review.gluster.com/2869
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Shishir Gowda <shishirng@gluster.com>
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 34 | 
1 files changed, 21 insertions, 13 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index d76abdd5965..2bff9c87b58 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -2803,7 +2803,7 @@ done:                  STACK_WIND (frame, dht_readdirp_cbk,                              next_subvol, next_subvol->fops->readdirp,                              local->fd, local->size, next_offset, -                            local->xattr_req); +                            local->xattr);                  return 0;          } @@ -2941,21 +2941,29 @@ dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          dht_deitransform (this, yoff, &xvol, (uint64_t *)&xoff); -        if (dict) { -                ret = dict_set_uint32 (dict, "trusted.glusterfs.dht.linkto", -                                       256); -                if (ret) -                        gf_log (this->name, GF_LOG_WARNING, -                                "failed to set 'glusterfs.dht.linkto' key"); -        } -          /* TODO: do proper readdir */ -        if (whichop == GF_FOP_READDIR) +        if (whichop == GF_FOP_READDIRP) { +                if (dict) +                        local->xattr = dict_ref (dict); +                else +                        local->xattr = dict_new (); + +                if (local->xattr) { +                        ret = dict_set_uint32 (local->xattr, +                                               "trusted.glusterfs.dht.linkto", +                                               256); +                        if (ret) +                                gf_log (this->name, GF_LOG_WARNING, +                                        "failed to set 'glusterfs.dht.linkto'" +                                        " key"); +                } + +                STACK_WIND (frame, dht_readdirp_cbk, xvol, xvol->fops->readdirp, +                            fd, size, xoff, local->xattr); +        } else {                  STACK_WIND (frame, dht_readdir_cbk, xvol, xvol->fops->readdir,                              fd, size, xoff); -        else -                STACK_WIND (frame, dht_readdirp_cbk, xvol, xvol->fops->readdirp, -                            fd, size, xoff, dict); +        }          return 0;  | 
