diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/cluster/ec/src/ec-common.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/xlators/cluster/ec/src/ec-common.c b/xlators/cluster/ec/src/ec-common.c index 9cc63959e37..35c2256ff4c 100644 --- a/xlators/cluster/ec/src/ec-common.c +++ b/xlators/cluster/ec/src/ec-common.c @@ -1405,6 +1405,10 @@ ec_get_size_version(ec_lock_link_t *link)          !ec_is_data_fop(fop->id))          link->optimistic_changelog = _gf_true; +    memset(&loc, 0, sizeof(loc)); + +    LOCK(&lock->loc.inode->lock); +      set_dirty = ec_set_dirty_flag(link, ctx, dirty);      /* If ec metadata has already been retrieved, do not try again. */ @@ -1412,20 +1416,16 @@ ec_get_size_version(ec_lock_link_t *link)          if (ec_is_data_fop(fop->id)) {              fop->healing |= lock->healing;          } -        return; +        goto unlock;      }      /* Determine if there's something we need to retrieve for the current       * operation. */      if (!set_dirty && !lock->query && (lock->loc.inode->ia_type != IA_IFREG) &&          (lock->loc.inode->ia_type != IA_INVAL)) { -        return; +        goto unlock;      } -    memset(&loc, 0, sizeof(loc)); - -    LOCK(&lock->loc.inode->lock); -      changed_flags = ec_set_xattrop_flags_and_params(lock, link, dirty);      if (link->waiting_flags) {          /* This fop needs to wait until all its flags are cleared which @@ -1436,6 +1436,7 @@ ec_get_size_version(ec_lock_link_t *link)          GF_ASSERT(!changed_flags);      } +unlock:      UNLOCK(&lock->loc.inode->lock);      if (!changed_flags)  | 
