diff options
Diffstat (limited to 'xlators/cluster')
| -rw-r--r-- | xlators/cluster/afr/src/afr-common.c | 5 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-dir-read.c | 17 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-dir-read.h | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heal-entry.c | 4 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr-self-heald.c | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/afr.h | 2 | ||||
| -rw-r--r-- | xlators/cluster/afr/src/pump.c | 13 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 16 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.h | 2 | ||||
| -rw-r--r-- | xlators/cluster/stripe/src/stripe.c | 8 | 
10 files changed, 40 insertions, 31 deletions
diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 83b91cd3ed1..c9a8b59554a 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -957,6 +957,11 @@ afr_local_cleanup (afr_local_t *local, xlator_t *this)                  if (local->cont.opendir.checksum)                          GF_FREE (local->cont.opendir.checksum);          } + +        { /* readdirp */ +                if (local->cont.readdir.dict) +                        dict_unref (local->cont.readdir.dict); +        }  } diff --git a/xlators/cluster/afr/src/afr-dir-read.c b/xlators/cluster/afr/src/afr-dir-read.c index d41102e7eea..389515e3c36 100644 --- a/xlators/cluster/afr/src/afr-dir-read.c +++ b/xlators/cluster/afr/src/afr-dir-read.c @@ -570,7 +570,8 @@ afr_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                             children[next_call_child],                                             children[next_call_child]->fops->readdirp,                                             local->fd, -                                           local->cont.readdir.size, 0); +                                           local->cont.readdir.size, 0, +                                           local->cont.readdir.dict);                          return 0;                  }          } @@ -612,7 +613,8 @@ afr_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                                                     (void *) (long) read_child,                                                     children[call_child],                                                     children[call_child]->fops->readdirp, -                                                   local->fd, local->cont.readdir.size, offset); +                                                   local->fd, local->cont.readdir.size, offset, +                                                   local->cont.readdir.dict);                                  return 0;                          }                  } else { @@ -628,7 +630,7 @@ out:  int32_t  afr_do_readdir (call_frame_t *frame, xlator_t *this, -                fd_t *fd, size_t size, off_t offset, int whichop) +                fd_t *fd, size_t size, off_t offset, int whichop, dict_t *dict)  {          afr_private_t *  priv       = NULL;          xlator_t **      children   = NULL; @@ -673,6 +675,7 @@ afr_do_readdir (call_frame_t *frame, xlator_t *this,          local->fd                  = fd_ref (fd);          local->cont.readdir.size   = size; +        local->cont.readdir.dict   = (dict)? dict_ref (dict) : NULL;          if (priv->strict_readdir) {                  ret = fd_ctx_get (fd, this, &ctx); @@ -709,7 +712,7 @@ afr_do_readdir (call_frame_t *frame, xlator_t *this,                                     (void *) (long) call_child,                                     children[call_child],                                     children[call_child]->fops->readdirp, fd, -                                   size, offset); +                                   size, offset, dict);          ret = 0;  out: @@ -723,16 +726,16 @@ int32_t  afr_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,               off_t offset)  { -        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIR); +        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIR, NULL);          return 0;  }  int32_t  afr_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -              off_t offset) +              off_t offset, dict_t *dict)  { -        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIRP); +        afr_do_readdir (frame, this, fd, size, offset, GF_FOP_READDIRP, dict);          return 0;  } diff --git a/xlators/cluster/afr/src/afr-dir-read.h b/xlators/cluster/afr/src/afr-dir-read.h index 6a6bc635414..7e50a1c8cc8 100644 --- a/xlators/cluster/afr/src/afr-dir-read.h +++ b/xlators/cluster/afr/src/afr-dir-read.h @@ -35,7 +35,7 @@ afr_readdir (call_frame_t *frame, xlator_t *this,  int32_t  afr_readdirp (call_frame_t *frame, xlator_t *this, -	     fd_t *fd, size_t size, off_t offset); +              fd_t *fd, size_t size, off_t offset, dict_t *dict);  int32_t  afr_checksum (call_frame_t *frame, xlator_t *this, diff --git a/xlators/cluster/afr/src/afr-self-heal-entry.c b/xlators/cluster/afr/src/afr-self-heal-entry.c index ba29656e2cd..ed1c51a2172 100644 --- a/xlators/cluster/afr/src/afr-self-heal-entry.c +++ b/xlators/cluster/afr/src/afr-self-heal-entry.c @@ -832,7 +832,7 @@ afr_sh_entry_expunge_subvol (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, afr_sh_entry_expunge_readdir_cbk,                      priv->children[active_src],                      priv->children[active_src]->fops->readdirp, -                    sh->healing_fd, sh->block_size, sh->offset); +                    sh->healing_fd, sh->block_size, sh->offset, NULL);          return 0;  } @@ -1889,7 +1889,7 @@ afr_sh_entry_impunge_subvol (call_frame_t *frame, xlator_t *this,          STACK_WIND (frame, afr_sh_entry_impunge_readdir_cbk,                      priv->children[active_src],                      priv->children[active_src]->fops->readdirp, -                    sh->healing_fd, sh->block_size, sh->offset); +                    sh->healing_fd, sh->block_size, sh->offset, 0);          return 0;  } diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c index f360ec33df8..186d7dd26a5 100644 --- a/xlators/cluster/afr/src/afr-self-heald.c +++ b/xlators/cluster/afr/src/afr-self-heald.c @@ -177,7 +177,7 @@ _crawl_directory (loc_t *loc, pid_t pid)                  goto out;          } -        while (syncop_readdirp (this, fd, 131072, offset, &entries)) { +        while (syncop_readdirp (this, fd, 131072, offset, NULL, &entries)) {                  ret = 0;                  free_entries = _gf_true;                  if (afr_up_children_count (priv->child_up, diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h index 0ff3000857c..889828a6fa6 100644 --- a/xlators/cluster/afr/src/afr.h +++ b/xlators/cluster/afr/src/afr.h @@ -495,7 +495,7 @@ typedef struct _afr_local {                          int32_t op_errno;                          size_t size;                          off_t offset; - +                        dict_t *dict;                          gf_boolean_t failed;                          int last_index;                  } readdir; diff --git a/xlators/cluster/afr/src/pump.c b/xlators/cluster/afr/src/pump.c index 73389009d68..357aa9f295f 100644 --- a/xlators/cluster/afr/src/pump.c +++ b/xlators/cluster/afr/src/pump.c @@ -362,7 +362,7 @@ gf_pump_traverse_directory (loc_t *loc)                  "pump opendir on %s returned=%d",                  loc->path, ret); -        while (syncop_readdirp (this, fd, 131072, offset, &entries)) { +        while (syncop_readdirp (this, fd, 131072, offset, NULL, &entries)) {                  free_entries = _gf_true;                  if (list_empty (&entries.list)) { @@ -2195,11 +2195,8 @@ pump_readdir (call_frame_t *frame,  static int32_t -pump_readdirp (call_frame_t *frame, -               xlator_t *this, -               fd_t *fd, -               size_t size, -               off_t off) +pump_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, +               size_t size, off_t off, dict_t *dict)  {          afr_private_t *priv  = NULL;  	priv = this->private; @@ -2208,10 +2205,10 @@ pump_readdirp (call_frame_t *frame,                              default_readdirp_cbk,                              FIRST_CHILD(this),                              FIRST_CHILD(this)->fops->readdirp, -                            fd, size, off); +                            fd, size, off, dict);                  return 0;          } -        afr_readdirp (frame, this, fd, size, off); +        afr_readdirp (frame, this, fd, size, off, dict);          return 0;  } diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index d371fc442da..a16ed7b6c50 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -2616,7 +2616,8 @@ done:                  STACK_WIND (frame, dht_readdirp_cbk,                              next_subvol, next_subvol->fops->readdirp, -                            local->fd, local->size, next_offset); +                            local->fd, local->size, next_offset, +                            local->xattr_req);                  return 0;          } @@ -2730,7 +2731,7 @@ unwind:  int  dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -                off_t yoff, int whichop) +                off_t yoff, int whichop, dict_t *dict)  {          dht_local_t  *local  = NULL;          int           op_errno = -1; @@ -2750,6 +2751,7 @@ dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,          local->fd = fd_ref (fd);          local->size = size; +        local->xattr_req = (dict)? dict_ref (dict) : NULL;          dht_deitransform (this, yoff, &xvol, (uint64_t *)&xoff); @@ -2759,7 +2761,7 @@ dht_do_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,                              fd, size, xoff);          else                  STACK_WIND (frame, dht_readdirp_cbk, xvol, xvol->fops->readdirp, -                            fd, size, xoff); +                            fd, size, xoff, dict);          return 0; @@ -2794,15 +2796,15 @@ dht_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,                  op = GF_FOP_READDIRP;  out: -        dht_do_readdir (frame, this, fd, size, yoff, op); +        dht_do_readdir (frame, this, fd, size, yoff, op, 0);          return 0;  }  int  dht_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, -              off_t yoff) +              off_t yoff, dict_t *dict)  { -        dht_do_readdir (frame, this, fd, size, yoff, GF_FOP_READDIRP); +        dht_do_readdir (frame, this, fd, size, yoff, GF_FOP_READDIRP, dict);          return 0;  } @@ -3988,7 +3990,7 @@ dht_rmdir_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          STACK_WIND (frame, dht_rmdir_readdirp_cbk,                      prev->this, prev->this->fops->readdirp, -                    local->fd, 4096, 0); +                    local->fd, 4096, 0, NULL);          return 0; diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index 791cf633507..8a0765b63f9 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -555,7 +555,7 @@ int32_t dht_readdir (call_frame_t  *frame,  int32_t dht_readdirp (call_frame_t *frame,                        xlator_t *this,                        fd_t     *fd, -                      size_t    size, off_t off); +                      size_t    size, off_t off, dict_t *dict);  int32_t dht_xattrop (call_frame_t           *frame,                       xlator_t           *this, diff --git a/xlators/cluster/stripe/src/stripe.c b/xlators/cluster/stripe/src/stripe.c index 15cfb8f60e9..086f07f92ca 100644 --- a/xlators/cluster/stripe/src/stripe.c +++ b/xlators/cluster/stripe/src/stripe.c @@ -3563,6 +3563,7 @@ stripe_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          stripe_local_t *local = NULL;          struct iovec   *final_vec = NULL;          struct iatt     tmp_stbuf = {0,}; +        struct iatt    *tmp_stbuf_p = NULL; //need it for a warning          struct iobref  *tmp_iobref = NULL;          stripe_fd_ctx_t  *fctx = NULL; @@ -3660,7 +3661,8 @@ stripe_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  GF_FREE (mlocal->replies);                  tmp_iobref = mlocal->iobref;                  /* work around for nfs truncated read. Bug 3774 */ -                WIPE (&tmp_stbuf); +                tmp_stbuf_p = &tmp_stbuf; +                WIPE (tmp_stbuf_p);                  STRIPE_STACK_UNWIND (readv, mframe, op_ret, op_errno, final_vec,                                       final_count, &tmp_stbuf, tmp_iobref); @@ -4348,7 +4350,7 @@ out:  }  int32_t  stripe_readdirp (call_frame_t *frame, xlator_t *this, -                 fd_t *fd, size_t size, off_t off) +                 fd_t *fd, size_t size, off_t off, dict_t *dict)  {          stripe_local_t  *local  = NULL;          stripe_private_t *priv = NULL; @@ -4390,7 +4392,7 @@ stripe_readdirp (call_frame_t *frame, xlator_t *this,                  goto err;          STACK_WIND (frame, stripe_readdirp_cbk, trav->xlator, -                    trav->xlator->fops->readdirp, fd, size, off); +                    trav->xlator->fops->readdirp, fd, size, off, dict);          return 0;  err:          op_errno = (op_errno == -1) ? errno : op_errno;  | 
