diff options
Diffstat (limited to 'xlators')
4 files changed, 142 insertions, 33 deletions
diff --git a/xlators/features/changetimerecorder/src/changetimerecorder.c b/xlators/features/changetimerecorder/src/changetimerecorder.c index ce6978470ee..d339189edb8 100644 --- a/xlators/features/changetimerecorder/src/changetimerecorder.c +++ b/xlators/features/changetimerecorder/src/changetimerecorder.c @@ -107,7 +107,6 @@ ctr_lookup_wind(call_frame_t                    *frame,                          goto out;                  };                  ctr_local = frame->local; -                ctr_local->client_pid = frame->root->pid;                  /*Definately no internal fops will reach here*/                  ctr_local->is_internal_fop = _gf_false;                  /*Dont record counters*/ @@ -129,8 +128,6 @@ ctr_lookup_wind(call_frame_t                    *frame,                          *((NEW_LINK_CX(ctr_inode_cx))->pargfid));                  strcpy (CTR_DB_REC(ctr_local).file_name,                          NEW_LINK_CX(ctr_inode_cx)->basename); -                strcpy (CTR_DB_REC(ctr_local).file_path, -                        NEW_LINK_CX(ctr_inode_cx)->basepath);                  /* Since we are in lookup we can ignore errors while                   * Inserting in the DB, because there may be many @@ -334,8 +331,7 @@ ctr_lookup (call_frame_t *frame, xlator_t *this,                  goto out;          /*fill ctr link context*/ -        FILL_CTR_LINK_CX(_link_cx, loc->parent->gfid, loc->name, -                        loc->path, out); +        FILL_CTR_LINK_CX(_link_cx, loc->parent->gfid, loc->name, out);           /* Fill ctr inode context*/           /* IA_IFREG : We assume its a file in the wind @@ -902,12 +898,10 @@ ctr_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,          CTR_IF_INTERNAL_FOP_THEN_GOTO (frame, xdata, out);          /*Fill old link context*/ -        FILL_CTR_LINK_CX(_olink_cx, oldloc->pargfid, oldloc->name, -                        oldloc->path, out); +        FILL_CTR_LINK_CX(_olink_cx, oldloc->pargfid, oldloc->name, out);          /*Fill new link context*/ -        FILL_CTR_LINK_CX(_nlink_cx, newloc->pargfid, newloc->name, -                        newloc->path, out); +        FILL_CTR_LINK_CX(_nlink_cx, newloc->pargfid, newloc->name, out);           /*Fill ctr inode context*/          FILL_CTR_INODE_CONTEXT(_inode_cx, oldloc->inode->ia_type, @@ -1077,7 +1071,7 @@ ctr_unlink (call_frame_t *frame, xlator_t *this,          CTR_IS_DISABLED_THEN_GOTO(this, out);          /*Fill link context*/ -        FILL_CTR_LINK_CX(_link_cx, loc->pargfid, loc->name, loc->path, out); +        FILL_CTR_LINK_CX(_link_cx, loc->pargfid, loc->name, out);           /*Fill ctr inode context*/          FILL_CTR_INODE_CONTEXT(_inode_cx, loc->inode->ia_type, @@ -1394,7 +1388,7 @@ ctr_mknod (call_frame_t *frame, xlator_t *this,          gf_uuid_copy (gfid, uuid_req);          /*fill ctr link context*/ -        FILL_CTR_LINK_CX (_link_cx, loc->pargfid, loc->name, loc->path, out); +        FILL_CTR_LINK_CX (_link_cx, loc->pargfid, loc->name, out);           /*Fill ctr inode context*/          FILL_CTR_INODE_CONTEXT (_inode_cx, loc->inode->ia_type, @@ -1485,7 +1479,7 @@ ctr_create (call_frame_t *frame, xlator_t *this,          gf_uuid_copy (gfid, uuid_req);          /*fill ctr link context*/ -        FILL_CTR_LINK_CX(_link_cx, loc->pargfid, loc->name, loc->path, out); +        FILL_CTR_LINK_CX(_link_cx, loc->pargfid, loc->name, out);           /*Fill ctr inode context*/          FILL_CTR_INODE_CONTEXT(_inode_cx, loc->inode->ia_type, @@ -1567,8 +1561,7 @@ ctr_link (call_frame_t *frame, xlator_t *this,          GF_ASSERT(frame->root);          /*fill ctr link context*/ -        FILL_CTR_LINK_CX(_link_cx, newloc->pargfid, newloc->name, -                        newloc->path, out); +        FILL_CTR_LINK_CX(_link_cx, newloc->pargfid, newloc->name, out);           /*Fill ctr inode context*/          FILL_CTR_INODE_CONTEXT(_inode_cx, oldloc->inode->ia_type, @@ -1881,7 +1874,7 @@ ctr_ipc_helper (xlator_t *this, dict_t *in_dict,                          goto out;                  } -                ret = get_db_setting (priv->_db_conn, db_param_key, &db_param); +                ret = get_db_params (priv->_db_conn, db_param_key, &db_param);                  if (ret == -1 || !db_param) {                          goto out;                  } @@ -1955,7 +1948,6 @@ out:  /******************************************************************************/ -  int  reconfigure (xlator_t *this, dict_t *options)  { @@ -1966,7 +1958,7 @@ reconfigure (xlator_t *this, dict_t *options)          priv = this->private;          if (dict_get_str(options, "changetimerecorder.frequency",                           &temp_str)) { -                gf_msg(this->name, GF_LOG_INFO, 0, CTR_MSG_SET, "set!"); +                gf_msg(this->name, GF_LOG_INFO, 0, CTR_MSG_SET, "set");          }          GF_OPTION_RECONF ("ctr-enabled", priv->enabled, options, @@ -1996,6 +1988,41 @@ reconfigure (xlator_t *this, dict_t *options)          GF_OPTION_RECONF ("record-entry", priv->ctr_record_wind, options,                            bool, out); + + + +        /* If database is sqlite */ +        if (priv->gfdb_db_type == GFDB_SQLITE3) { + +                /* AUTOCHECKPOINT */ +                if (dict_get_str (options, GFDB_SQL_PARAM_WAL_AUTOCHECK, +                                &temp_str) == 0) { +                        ret = set_db_params (priv->_db_conn, +                                        "wal_autocheckpoint", temp_str); +                        if (ret) { +                                gf_msg (this->name, GF_LOG_ERROR, 0, +                                        CTR_MSG_SET_VALUE_TO_SQL_PARAM_FAILED, +                                        "Failed  to set %s", +                                        GFDB_SQL_PARAM_WAL_AUTOCHECK); +                        } +                } + +                /* CACHE_SIZE */ +                if (dict_get_str (options, GFDB_SQL_PARAM_CACHE_SIZE, &temp_str) +                                == 0) { +                        ret = set_db_params (priv->_db_conn, "cache_size", +                                        temp_str); +                        if (ret) { +                                gf_msg (this->name, GF_LOG_ERROR, 0, +                                        CTR_MSG_SET_VALUE_TO_SQL_PARAM_FAILED, +                                        "Failed  to set %s", +                                        GFDB_SQL_PARAM_CACHE_SIZE); +                        } +                } +        } + +        ret = 0; +  out:          return ret; diff --git a/xlators/features/changetimerecorder/src/ctr-helper.c b/xlators/features/changetimerecorder/src/ctr-helper.c index 44abf7d5142..263eb58db6f 100644 --- a/xlators/features/changetimerecorder/src/ctr-helper.c +++ b/xlators/features/changetimerecorder/src/ctr-helper.c @@ -138,8 +138,6 @@ fill_db_record_for_wind (xlator_t               *this,                                  *((NEW_LINK_CX(ctr_inode_cx))->pargfid));                          strcpy (CTR_DB_REC(ctr_local).file_name,                                  NEW_LINK_CX(ctr_inode_cx)->basename); -                        strcpy (CTR_DB_REC(ctr_local).file_path, -                                NEW_LINK_CX(ctr_inode_cx)->basepath);                  }                  /*rename fop*/                  if (OLD_LINK_CX(ctr_inode_cx)) { @@ -147,8 +145,6 @@ fill_db_record_for_wind (xlator_t               *this,                                  *((OLD_LINK_CX(ctr_inode_cx))->pargfid));                          strcpy (CTR_DB_REC(ctr_local).old_file_name,                                  OLD_LINK_CX(ctr_inode_cx)->basename); -                        strcpy (CTR_DB_REC(ctr_local).old_path, -                                OLD_LINK_CX(ctr_inode_cx)->basepath);                  }          } diff --git a/xlators/features/changetimerecorder/src/ctr-helper.h b/xlators/features/changetimerecorder/src/ctr-helper.h index 2b2dc3e17c7..486b9452eb4 100644 --- a/xlators/features/changetimerecorder/src/ctr-helper.h +++ b/xlators/features/changetimerecorder/src/ctr-helper.h @@ -97,8 +97,8 @@ do {\                  0, sizeof(gfdb_time_t));\          gf_uuid_clear (ctr_local->gfdb_db_record.gfid);\          gf_uuid_clear (ctr_local->gfdb_db_record.pargfid);\ -        memset(ctr_local->gfdb_db_record.file_name, 0, PATH_MAX);\ -        memset(ctr_local->gfdb_db_record.old_file_name, 0, PATH_MAX);\ +        memset(ctr_local->gfdb_db_record.file_name, 0, GF_NAME_MAX + 1);\ +        memset(ctr_local->gfdb_db_record.old_file_name, 0, GF_NAME_MAX + 1);\          ctr_local->gfdb_db_record.gfdb_fop_type = GFDB_FOP_INVALID_OP;\          ctr_local->ia_inode_type = IA_INVAL;\  } while (0) @@ -159,8 +159,6 @@ free_ctr_local (gf_ctr_local_t *ctr_local)  typedef struct gf_ctr_link_context {          uuid_t                  *pargfid;          const char              *basename; -        /*basepath is redundent. Will go off*/ -        const char              *basepath;  } gf_ctr_link_context_t;   /*Context Carrier Structure for inodes*/ @@ -187,21 +185,18 @@ do {\                  if (ctr_link_cx->pargfid)\                          GF_ASSERT (*(ctr_link_cx->pargfid));\                  GF_ASSERT (ctr_link_cx->basename);\ -                GF_ASSERT (ctr_link_cx->basepath);\          };\  } while (0)  /*Clear and fill the ctr_link_context with values*/ -#define FILL_CTR_LINK_CX(ctr_link_cx, _pargfid, _basename, _basepath, label)\ +#define FILL_CTR_LINK_CX(ctr_link_cx, _pargfid, _basename, label)\  do {\          GF_VALIDATE_OR_GOTO ("ctr", ctr_link_cx, label);\          GF_VALIDATE_OR_GOTO ("ctr", _pargfid, label);\          GF_VALIDATE_OR_GOTO ("ctr", _basename, label);\ -        GF_VALIDATE_OR_GOTO ("ctr", _basepath, label);\          memset (ctr_link_cx, 0, sizeof (*ctr_link_cx));\          ctr_link_cx->pargfid = &_pargfid;\          ctr_link_cx->basename = _basename;\ -        ctr_link_cx->basepath = _basepath;\  } while (0)  #define NEW_LINK_CX(ctr_inode_cx)\ diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 593ae2aa833..f582009bb5b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -77,15 +77,15 @@ validate_tier_counters (glusterd_volinfo_t      *volinfo,          current_rt = get_tier_freq_threshold (volinfo,                                                  "cluster.read-freq-threshold");          if (current_rt == -1) { -                snprintf (errstr, sizeof (errstr), " Failed to retrive value of" -                        "cluster.read-freq-threshold"); +                snprintf (errstr, sizeof (errstr), " Failed to retrieve value" +                        " of cluster.read-freq-threshold");                  goto out;          }          current_wt = get_tier_freq_threshold (volinfo,                                                  "cluster.write-freq-threshold");          if (current_wt == -1) { -                snprintf (errstr, sizeof (errstr), " Failed to retrive value of" -                        "cluster.write-freq-threshold"); +                snprintf (errstr, sizeof (errstr), " Failed to retrieve value " +                          "of cluster.write-freq-threshold");                  goto out;          }          /* If record-counters is set to off */ @@ -133,6 +133,69 @@ out:  } + +/* + * Validation function for ctr sql params + *      features.ctr-sql-db-cachesize           (Range: 1000 to 262144 pages) + *      features.ctr-sql-db-wal-autocheckpoint  (Range: 1000 to 262144 pages) + * */ +static int +validate_ctr_sql_params (glusterd_volinfo_t      *volinfo, +                        dict_t                  *dict, +                        char                    *key, +                        char                    *value, +                        char                    **op_errstr) +{ +        int ret                         = -1; +        xlator_t        *this           = NULL; +        char            errstr[2048]    = ""; +        int             origin_val      = -1; + +        this = THIS; +        GF_ASSERT (this); + + +        ret = gf_string2int (value, &origin_val); +        if (ret) { +                snprintf (errstr, sizeof (errstr), "%s is not a compatible " +                          "value. %s expects an integer value.", value, key); +                ret = -1; +                goto out; +        } + +        if (origin_val < 0) { +                snprintf (errstr, sizeof (errstr), "%s is not a " +                          "compatible value. %s expects a positive" +                          "integer value.", value, key); +                ret = -1; +                goto out; +        } + +        if (strstr (key, "sql-db-cachesize") || +                strstr (key, "sql-db-wal-autocheckpoint")) { +                if ((origin_val < 1000) || (origin_val > 262144)) { +                        snprintf (errstr, sizeof (errstr), "%s is not a " +                                  "compatible value. %s " +                                  "expects a value between : " +                                  "1000 to 262144.", +                                  value, key); +                        ret = -1; +                        goto out; +                } +        } + + +        ret = 0; +out: +        if (ret) { +                gf_msg (this->name, GF_LOG_ERROR, EINVAL, +                        GD_MSG_INCOMPATIBLE_VALUE, "%s", errstr); +                *op_errstr = gf_strdup (errstr); +        } +        return ret; +} + +  /* Validation for tiering frequency thresholds   * If any of the frequency thresholds are set to a non-zero value,   * switch record-counters on, if not already on @@ -2444,6 +2507,34 @@ struct volopt_map_entry glusterd_volopt_map[] = {                           "hits an attempt to heal the database per "                           "inode is done"          }, +        { .key         = "features.ctr-sql-db-cachesize", +          .voltype     = "features/changetimerecorder", +          .value       = "1000", +          .option      = "sql-db-cachesize", +          .validate_fn = validate_ctr_sql_params, +          .op_version  = GD_OP_VERSION_3_7_7, +          .description = "Defines the cache size of the sqlite database of " +                         "changetimerecorder xlator." +                         "The input to this option is in pages." +                         "Each page is 4096 bytes. Default value is 1000 " +                         "pages i.e ~ 4 MB. " +                         "The max value is 262144 pages i.e 1 GB and " +                         "the min value is 1000 pages i.e ~ 4 MB. " +        }, +        { .key         = "features.ctr-sql-db-wal-autocheckpoint", +          .voltype     = "features/changetimerecorder", +          .value       = "1000", +          .option      = "sql-db-wal-autocheckpoint", +          .validate_fn = validate_ctr_sql_params, +          .op_version  = GD_OP_VERSION_3_7_7, +          .description = "Defines the autocheckpoint of the sqlite database of " +                         " changetimerecorder. " +                         "The input to this option is in pages. " +                         "Each page is 4096 bytes. Default value is 1000 " +                         "pages i.e ~ 4 MB." +                         "The max value is 262144 pages i.e 1 GB and " +                         "the min value is 1000 pages i.e ~4 MB." +        },  #endif /* USE_GFDB */          { .key         = "locks.trace",            .voltype     = "features/locks",  | 
