diff options
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 109bc77f2..faf575df9 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -1113,14 +1113,25 @@ dht_lookup (call_frame_t *frame, xlator_t *this,                  local->inode = inode_ref (loc->inode); -                call_cnt = local->call_cnt = layout->cnt; -                  /* NOTE: we don't require 'trusted.glusterfs.dht.linkto' attribute,                   *       revalidates directly go to the cached-subvolume.                   */                  ret = dict_set_uint32 (local->xattr_req,                                         "trusted.glusterfs.dht", 4 * 4); +                if (IA_ISDIR (local->inode->ia_type)) { +                        local->call_cnt = call_cnt = conf->subvolume_cnt; +                        for (i = 0; i < call_cnt; i++) { +                                STACK_WIND (frame, dht_revalidate_cbk, +                                            conf->subvolumes[i], +                                            conf->subvolumes[i]->fops->lookup, +                                            loc, local->xattr_req); +                        } +                        return 0; +                } + +                call_cnt = local->call_cnt = layout->cnt; +                  /* need it for self-healing linkfiles which is                     'in-migration' state */                  ret = dict_set_uint32 (local->xattr_req,  | 
