diff options
| -rw-r--r-- | xlators/features/marker/src/marker.c | 27 | ||||
| -rw-r--r-- | xlators/features/marker/src/marker.h | 5 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.h | 1 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 16 | 
4 files changed, 43 insertions, 6 deletions
diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c index 3325d8af397..59152db43c7 100644 --- a/xlators/features/marker/src/marker.c +++ b/xlators/features/marker/src/marker.c @@ -468,11 +468,16 @@ marker_create_frame (xlator_t *this, marker_local_t *local)  int32_t  marker_xtime_update_marks (xlator_t *this, marker_local_t *local)  { +        marker_conf_t *priv = NULL; +          GF_VALIDATE_OR_GOTO ("marker", this, out);          GF_VALIDATE_OR_GOTO (this->name, local, out); -        if ((local->pid == GF_CLIENT_PID_GSYNCD) || -            (local->pid == GF_CLIENT_PID_DEFRAG)) +        priv = this->private; + +        if ((local->pid == GF_CLIENT_PID_GSYNCD +             && !(priv->feature_enabled & GF_XTIME_GSYNC_FORCE)) +            || (local->pid == GF_CLIENT_PID_DEFRAG))                  goto out;          marker_gettimeofday (local); @@ -2593,7 +2598,7 @@ out:  int32_t  reconfigure (xlator_t *this, dict_t *options)  { -        int32_t         ret     = -1; +        int32_t         ret     = 0;          data_t         *data    = NULL;          gf_boolean_t    flag    = _gf_false;          marker_conf_t  *priv    = NULL; @@ -2634,11 +2639,17 @@ reconfigure (xlator_t *this, dict_t *options)                                          "xtime updation will fail");                          } else {                                  priv->feature_enabled |= GF_XTIME; +                                data = dict_get (options, "gsync-force-xtime"); +                                if (!data) +                                        goto out; +                                ret = gf_string2boolean (data->data, &flag); +                                if (ret == 0 && flag) +                                        priv->feature_enabled |= GF_XTIME_GSYNC_FORCE;                          }                  }          }  out: -        return 0; +        return ret;  } @@ -2694,9 +2705,16 @@ init (xlator_t *this)                                  goto err;                          priv->feature_enabled |= GF_XTIME; +                        data = dict_get (options, "gsync-force-xtime"); +                        if (!data) +                                goto cont; +                        ret = gf_string2boolean (data->data, &flag); +                        if (ret == 0 && flag) +                                priv->feature_enabled |= GF_XTIME_GSYNC_FORCE;                  }          } + cont:          this->local_pool = mem_pool_new (marker_local_t, 128);          if (!this->local_pool) {                  gf_log (this->name, GF_LOG_ERROR, @@ -2771,5 +2789,6 @@ struct volume_options options[] = {          {.key = {"timestamp-file"}},          {.key = {"quota"}},          {.key = {"xtime"}}, +        {.key = {"gsync-force-xtime"}},          {.key = {NULL}}  }; diff --git a/xlators/features/marker/src/marker.h b/xlators/features/marker/src/marker.h index 2f1feeee6b5..1a58f8cfcbc 100644 --- a/xlators/features/marker/src/marker.h +++ b/xlators/features/marker/src/marker.h @@ -28,8 +28,9 @@  #define TIMESTAMP_FILE      "timestamp-file"  enum { -        GF_QUOTA=1, -        GF_XTIME=2 +        GF_QUOTA             = 1, +        GF_XTIME             = 2, +        GF_XTIME_GSYNC_FORCE = 4,  };  /*initialize the local variable*/ diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.h b/xlators/mgmt/glusterd/src/glusterd-volgen.h index ad3e9bd8809..0c1a76c123d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.h +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.h @@ -23,6 +23,7 @@  #define VKEY_DIAG_LAT_MEASUREMENT "diagnostics.latency-measurement"  #define VKEY_FEATURES_LIMIT_USAGE "features.limit-usage"  #define VKEY_MARKER_XTIME         GEOREP".indexing" +#define VKEY_MARKER_XTIME_FORCE   GEOREP".ignore-pid-check"  #define VKEY_CHANGELOG            "changelog.changelog"  #define VKEY_FEATURES_QUOTA       "features.quota" diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 7ec8cf75541..8c6c5b9544b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -1007,6 +1007,22 @@ struct volopt_map_entry glusterd_volopt_map[] = {            .flags       = OPT_FLAG_FORCE,            .op_version  = 1          }, +        { .key         = VKEY_MARKER_XTIME_FORCE, +          .voltype     = "features/marker", +          .option      = "gsync-force-xtime", +          .value       = "off", +          .type        = NO_DOC, +          .flags       = OPT_FLAG_FORCE, +          .op_version  = 2 +        }, +        { .key         = VKEY_MARKER_XTIME_FORCE, +          .voltype     = "features/marker", +          .option      = "!gsync-force-xtime", +          .value       = "off", +          .type        = NO_DOC, +          .flags       = OPT_FLAG_FORCE, +          .op_version  = 2 +        },          { .key         = VKEY_FEATURES_QUOTA,            .voltype     = "features/marker",            .option      = "quota",  | 
