diff options
| author | Ashish Pandey <aspandey@redhat.com> | 2017-01-19 18:20:44 +0530 | 
|---|---|---|
| committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2017-01-19 23:39:40 -0800 | 
| commit | 729b494b828712cba9d03395ca081666ae589bb7 (patch) | |
| tree | 955212005b0ffb8cadb27d1efdfdcacd349970a2 | |
| parent | 4a11b1d8aa79bb6bd26d2a06b3c4c3a9574329d4 (diff) | |
cluster/disperse: Do not log fop failed for lockless fops
Problem: Operation failed messages are getting logged
based on the callbacks of lockless fop's. If a fop does
not take a lock, it is possible that it will get some
out of sync xattr, iatts. We can not depend on these
callback to psay that the fop has failed.
Solution: Print failed messages only for locked fops.
However, heal would still be triggered.
Change-Id: I4427402c8c944c23f16073613caa03ea788bead3
BUG: 1414287
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
Reviewed-on: http://review.gluster.org/16435
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
| -rw-r--r-- | xlators/cluster/ec/src/ec-common.c | 25 | 
1 files changed, 13 insertions, 12 deletions
diff --git a/xlators/cluster/ec/src/ec-common.c b/xlators/cluster/ec/src/ec-common.c index ec6bd8e28fd..a038ec10ad1 100644 --- a/xlators/cluster/ec/src/ec-common.c +++ b/xlators/cluster/ec/src/ec-common.c @@ -108,18 +108,19 @@ void ec_check_status(ec_fop_data_t * fop)          }      } -    gf_msg (fop->xl->name, GF_LOG_WARNING, 0, -            EC_MSG_OP_FAIL_ON_SUBVOLS, -            "Operation failed on %d of %d subvolumes.(up=%s, mask=%s, " -            "remaining=%s, good=%s, bad=%s)", -            gf_bits_count(ec->xl_up & ~(fop->remaining | fop->good)), ec->nodes, -            ec_bin(str1, sizeof(str1), ec->xl_up, ec->nodes), -            ec_bin(str2, sizeof(str2), fop->mask, ec->nodes), -            ec_bin(str3, sizeof(str3), fop->remaining, ec->nodes), -            ec_bin(str4, sizeof(str4), fop->good, ec->nodes), -            ec_bin(str5, sizeof(str5), -            ec->xl_up & ~(fop->remaining | fop->good), ec->nodes)); - +    if (fop->lock_count > 0) { +            gf_msg (fop->xl->name, GF_LOG_WARNING, 0, +                    EC_MSG_OP_FAIL_ON_SUBVOLS, +                    "Operation failed on %d of %d subvolumes.(up=%s, mask=%s, " +                    "remaining=%s, good=%s, bad=%s)", +                    gf_bits_count(ec->xl_up & ~(fop->remaining | fop->good)), ec->nodes, +                    ec_bin(str1, sizeof(str1), ec->xl_up, ec->nodes), +                    ec_bin(str2, sizeof(str2), fop->mask, ec->nodes), +                    ec_bin(str3, sizeof(str3), fop->remaining, ec->nodes), +                    ec_bin(str4, sizeof(str4), fop->good, ec->nodes), +                    ec_bin(str5, sizeof(str5), +                    ec->xl_up & ~(fop->remaining | fop->good), ec->nodes)); +    }      if (fop->use_fd)      {          if (fop->fd != NULL) {  | 
