diff options
| -rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 4 | ||||
| -rw-r--r-- | xlators/cluster/dht/src/tier.c | 3 | 
2 files changed, 6 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index c26100c84fa..6c0afdbec90 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -715,7 +715,8 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          goto unlock;                  } -                if (stbuf->ia_type != local->inode->ia_type) { +                if ((!IA_ISINVAL(local->inode->ia_type)) && +                    stbuf->ia_type != local->inode->ia_type) {                          gf_msg (this->name, GF_LOG_WARNING, 0,                                  DHT_MSG_FILE_TYPE_MISMATCH,                                  "mismatching filetypes 0%o v/s 0%o for %s," @@ -727,6 +728,7 @@ dht_revalidate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                          local->op_errno = EINVAL;                          goto unlock; +                  }                  layout = local->layout; diff --git a/xlators/cluster/dht/src/tier.c b/xlators/cluster/dht/src/tier.c index 593a2cc29ed..866405105a8 100644 --- a/xlators/cluster/dht/src/tier.c +++ b/xlators/cluster/dht/src/tier.c @@ -973,6 +973,9 @@ tier_search (xlator_t *this, dht_layout_t *layout, const char *name)                  search_first_subvol = 1;          } +        if ((layout->list[0].err > 0) && (layout->list[0].err != ENOTCONN)) +                search_first_subvol = 0; +          if (search_first_subvol)                  subvol = layout->list[0].xlator;          else  | 
