diff options
Diffstat (limited to 'xlators/cluster/afr/src/afr.c')
| -rw-r--r-- | xlators/cluster/afr/src/afr.c | 26 | 
1 files changed, 22 insertions, 4 deletions
diff --git a/xlators/cluster/afr/src/afr.c b/xlators/cluster/afr/src/afr.c index da62564e93a..48beaf24a6e 100644 --- a/xlators/cluster/afr/src/afr.c +++ b/xlators/cluster/afr/src/afr.c @@ -132,6 +132,7 @@ reconfigure (xlator_t *this, dict_t *options)          int            index       = -1;          char          *qtype       = NULL;          char          *fav_child_policy = NULL; +        gf_boolean_t   consistent_io = _gf_false;          priv = this->private; @@ -258,6 +259,11 @@ reconfigure (xlator_t *this, dict_t *options)          priv->did_discovery = _gf_false; +        GF_OPTION_RECONF ("consistent-io", consistent_io, options, bool, out); +        if (priv->quorum_count != 0) +                consistent_io = _gf_false; +        priv->consistent_io = consistent_io; +          ret = 0;  out:          return ret; @@ -494,6 +500,10 @@ init (xlator_t *this)          GF_OPTION_INIT ("quorum-reads", priv->quorum_reads, bool, out);          GF_OPTION_INIT ("consistent-metadata", priv->consistent_metadata, bool,                          out); +        GF_OPTION_INIT ("consistent-io", priv->consistent_io, bool, out); + +        if (priv->quorum_count != 0) +                priv->consistent_io = _gf_false;          priv->wait_count = 1; @@ -594,14 +604,11 @@ fini (xlator_t *this)  struct xlator_fops fops = {          .lookup      = afr_lookup, -        .open        = afr_open,          .lk          = afr_lk,          .flush       = afr_flush,          .statfs      = afr_statfs,          .fsync       = afr_fsync,          .fsyncdir    = afr_fsyncdir, -        .xattrop     = afr_xattrop, -        .fxattrop    = afr_fxattrop,          .inodelk     = afr_inodelk,          .finodelk    = afr_finodelk,          .entrylk     = afr_entrylk, @@ -629,9 +636,14 @@ struct xlator_fops fops = {          .fallocate   = afr_fallocate,          .discard     = afr_discard,          .zerofill    = afr_zerofill, +        .xattrop     = afr_xattrop, +        .fxattrop    = afr_fxattrop, -        /* dir read */ +        /*inode open*/          .opendir     = afr_opendir, +        .open        = afr_open, + +        /* dir read */          .readdir     = afr_readdir,          .readdirp    = afr_readdirp, @@ -986,5 +998,11 @@ struct volume_options options[] = {                           " with identical mtime and size in more than half the "                           "number of bricks in the replica.",          }, +        { .key = {"consistent-io"}, +          .type = GF_OPTION_TYPE_BOOL, +          .default_value = "no", +          .description = "If this option is enabled, i/o will fail even if " +                         "one of the bricks is down in the replicas", +        },          { .key  = {NULL} },  };  | 
