diff options
Diffstat (limited to 'xlators/cluster/dht/src/dht-common.c')
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 24 | 
1 files changed, 23 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 0b32a20a1e5..d58cac9fae4 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -4119,6 +4119,7 @@ dht_rmdir_is_subvol_empty (call_frame_t *frame, xlator_t *this,          call_frame_t       *lookup_frame = NULL;          dht_local_t        *lookup_local = NULL;          dht_local_t        *local = NULL; +        dict_t             *xattrs = NULL;          local = frame->local; @@ -4139,6 +4140,21 @@ dht_rmdir_is_subvol_empty (call_frame_t *frame, xlator_t *this,                  return 0;          } +        xattrs = dict_new (); +        if (!xattrs) { +                gf_log (this->name, GF_LOG_ERROR, "dict_new failed"); +                return -1; +        } + +        ret = dict_set_uint32 (xattrs, DHT_LINKFILE_KEY, 256); +        if (ret) { +                gf_log (this->name, GF_LOG_ERROR, "failed to set linkto key" +                        " in dict"); +                if (xattrs) +                        dict_unref (xattrs); +                return -1; +        } +          list_for_each_entry (trav, &entries->list, list) {                  if (strcmp (trav->d_name, ".") == 0)                          continue; @@ -4182,12 +4198,18 @@ dht_rmdir_is_subvol_empty (call_frame_t *frame, xlator_t *this,                  STACK_WIND (lookup_frame, dht_rmdir_lookup_cbk,                              src, src->fops->lookup, -                            &lookup_local->loc, NULL); +                            &lookup_local->loc, xattrs);                  ret++;          } +        if (xattrs) +                dict_unref (xattrs); +          return ret;  err: +        if (xattrs) +                dict_unref (xattrs); +          DHT_STACK_DESTROY (lookup_frame);          return 0;  }  | 
