summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/gfdb/gfdb_data_store.c
diff options
context:
space:
mode:
authorJoseph Fernandes <josferna@redhat.com>2015-12-15 18:29:06 +0530
committerDan Lambright <dlambrig@redhat.com>2015-12-22 14:45:20 -0800
commita7de0cd095f799e3128f74fcccc57ac4d6fd0b6d (patch)
tree88c29606bcffa1252ac34f6f7a5ff52be1001c5b /libglusterfs/src/gfdb/gfdb_data_store.c
parent7223062cdc1934a6694265cfd73b9cc5a8c4f377 (diff)
ctr/sql: Providing for vol set for sqlcachesize and sqlWALsize and skip recording path
1. Providing vol set option for cache size and wal autocheck point so that performance can be tuned. 2. Removed recording of file path in the db. Trimming database columns. Path need not be stored in the db, as PARGFID, GFID, Basename is suffice to derive the path during migration. Backport of http://review.gluster.org/12972 > Change-Id: I2cb590451a6d244bc91fe66c6dbffe2c2059dfb8 > BUG: 1293034 > Signed-off-by: Joseph Fernandes <josferna@redhat.com> > Reviewed-on: http://review.gluster.org/12972 > Reviewed-by: N Balachandran <nbalacha@redhat.com> > Tested-by: Gluster Build System <jenkins@build.gluster.com> > Tested-by: NetBSD Build System <jenkins@build.gluster.org> > Reviewed-by: Dan Lambright <dlambrig@redhat.com> > Tested-by: Dan Lambright <dlambrig@redhat.com> Signed-off-by: Joseph Fernandes <josferna@redhat.com> Change-Id: Ia1c109983ec6ce75ed27b8c08f454f5b6283c31d BUG: 1293659 Reviewed-on: http://review.gluster.org/13067 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Dan Lambright <dlambrig@redhat.com> Tested-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_data_store.c')
-rw-r--r--libglusterfs/src/gfdb/gfdb_data_store.c165
1 files changed, 96 insertions, 69 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_data_store.c b/libglusterfs/src/gfdb/gfdb_data_store.c
index a9becd35807..267dc839e92 100644
--- a/libglusterfs/src/gfdb/gfdb_data_store.c
+++ b/libglusterfs/src/gfdb/gfdb_data_store.c
@@ -147,8 +147,7 @@ delete_conn_node (gfdb_conn_node_t *_conn_node)
} else {
if (IS_FIRST_NODE(db_conn_list, _conn_node)) {
db_conn_list = list_entry (db_conn_list->conn_list.next,
- gfdb_conn_node_t,
- conn_list);
+ gfdb_conn_node_t, conn_list);
}
list_del(&_conn_node->conn_list);
GF_FREE (_conn_node);
@@ -176,8 +175,9 @@ out:
/*Internal function: Used initialize/map db operation of
* specified type of db plugin*/
static int
-init_db_operations (gfdb_db_type_t gfdb_db_type,
- gfdb_db_operations_t *gfdb_db_operations) {
+init_db_operations (gfdb_db_type_t gfdb_db_type,
+ gfdb_db_operations_t *gfdb_db_operations)
+{
int ret = -1;
@@ -268,7 +268,7 @@ init_db (dict_t *args, gfdb_db_type_t gfdb_db_type)
/*Calling the init_db_op of the respected db type*/
GF_ASSERT (db_operations_t->init_db_op);
ret = db_operations_t->init_db_op (args, &_conn_node->gfdb_connection.
- gf_db_connection);
+ gf_db_connection);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_INIT_DB_FAILED, "Failed initializing database");
@@ -314,7 +314,7 @@ alloc_failed:
int
fini_db (gfdb_conn_node_t *_conn_node)
{
- int ret = -1;
+ int ret = -1;
gfdb_db_operations_t *db_operations_t = NULL;
CHECK_CONN_NODE_GOTO (_conn_node, empty);
@@ -324,7 +324,7 @@ fini_db (gfdb_conn_node_t *_conn_node)
GF_ASSERT (db_operations_t->fini_db_op);
ret = db_operations_t->fini_db_op(&_conn_node->gfdb_connection.
- gf_db_connection);
+ gf_db_connection);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_CLOSE_CONNECTION_FAILED, "Failed close the db "
@@ -366,9 +366,9 @@ out:
* -ve value in case of failure*/
int
insert_record (gfdb_conn_node_t *_conn_node,
- gfdb_db_record_t *gfdb_db_record)
+ gfdb_db_record_t *gfdb_db_record)
{
- int ret = 0;
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -380,7 +380,7 @@ insert_record (gfdb_conn_node_t *_conn_node,
if (db_operations_t->insert_record_op) {
ret = db_operations_t->insert_record_op (gf_db_connection,
- gfdb_db_record);
+ gfdb_db_record);
if (ret) {
gf_msg (GFDB_DATA_STORE, _gfdb_log_level (GF_LOG_ERROR,
gfdb_db_record->ignore_errors), 0,
@@ -407,9 +407,9 @@ insert_record (gfdb_conn_node_t *_conn_node,
* -ve value in case of failure*/
int
delete_record (gfdb_conn_node_t *_conn_node,
- gfdb_db_record_t *gfdb_db_record)
+ gfdb_db_record_t *gfdb_db_record)
{
- int ret = 0;
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -421,7 +421,7 @@ delete_record (gfdb_conn_node_t *_conn_node,
if (db_operations_t->delete_record_op) {
ret = db_operations_t->delete_record_op (gf_db_connection,
- gfdb_db_record);
+ gfdb_db_record);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_DELETE_FAILED, "Delete operation "
@@ -447,9 +447,11 @@ delete_record (gfdb_conn_node_t *_conn_node,
* Returns : if successful return 0 or
* -ve value in case of failure*/
int
-find_all(gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback,
- void *_query_cbk_args) {
- int ret = 0;
+find_all (gfdb_conn_node_t *_conn_node,
+ gf_query_callback_t query_callback,
+ void *_query_cbk_args)
+{
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -460,8 +462,8 @@ find_all(gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback,
if (db_operations_t->find_all_op) {
ret = db_operations_t->find_all_op (gf_db_connection,
- query_callback,
- _query_cbk_args);
+ query_callback,
+ _query_cbk_args);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED, "Find all operation "
@@ -488,12 +490,13 @@ find_all(gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback,
* Returns : if successful return 0 or
* -ve value in case of failure*/
int
-find_unchanged_for_time(gfdb_conn_node_t *_conn_node,
- gf_query_callback_t query_callback,
- void *_query_cbk_args,
- gfdb_time_t *for_time) {
+find_unchanged_for_time(gfdb_conn_node_t *_conn_node,
+ gf_query_callback_t query_callback,
+ void *_query_cbk_args,
+ gfdb_time_t *for_time)
+{
- int ret = 0;
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -505,10 +508,8 @@ find_unchanged_for_time(gfdb_conn_node_t *_conn_node,
if (db_operations_t->find_unchanged_for_time_op) {
ret = db_operations_t->find_unchanged_for_time_op
- (gf_db_connection,
- query_callback,
- _query_cbk_args,
- for_time);
+ (gf_db_connection, query_callback,
+ _query_cbk_args, for_time);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED, "Find unchanged "
@@ -533,12 +534,13 @@ find_unchanged_for_time(gfdb_conn_node_t *_conn_node,
* Returns : if successful return 0 or
* -ve value in case of failure*/
int
-find_recently_changed_files(gfdb_conn_node_t *_conn_node,
- gf_query_callback_t query_callback,
- void *_query_cbk_args,
- gfdb_time_t *from_time) {
+find_recently_changed_files(gfdb_conn_node_t *_conn_node,
+ gf_query_callback_t query_callback,
+ void *_query_cbk_args,
+ gfdb_time_t *from_time)
+{
- int ret = 0;
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -550,10 +552,8 @@ find_recently_changed_files(gfdb_conn_node_t *_conn_node,
if (db_operations_t->find_recently_changed_files_op) {
ret = db_operations_t->find_recently_changed_files_op (
- gf_db_connection,
- query_callback,
- _query_cbk_args,
- from_time);
+ gf_db_connection, query_callback,
+ _query_cbk_args, from_time);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED,
@@ -590,9 +590,9 @@ find_unchanged_for_time_freq(gfdb_conn_node_t *_conn_node,
gfdb_time_t *for_time,
int write_freq_thresold,
int read_freq_thresold,
- gf_boolean_t _clear_counters) {
-
- int ret = 0;
+ gf_boolean_t _clear_counters)
+{
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -604,13 +604,10 @@ find_unchanged_for_time_freq(gfdb_conn_node_t *_conn_node,
if (db_operations_t->find_unchanged_for_time_freq_op) {
ret = db_operations_t->find_unchanged_for_time_freq_op(
- gf_db_connection,
- query_callback,
- _query_cbk_args,
- for_time,
- write_freq_thresold,
- read_freq_thresold,
- _clear_counters);
+ gf_db_connection, query_callback,
+ _query_cbk_args, for_time,
+ write_freq_thresold, read_freq_thresold,
+ _clear_counters);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED,
@@ -646,9 +643,10 @@ find_recently_changed_files_freq(gfdb_conn_node_t *_conn_node,
gfdb_time_t *from_time,
int write_freq_thresold,
int read_freq_thresold,
- gf_boolean_t _clear_counters) {
+ gf_boolean_t _clear_counters)
+{
- int ret = 0;
+ int ret = 0;
gfdb_db_operations_t *db_operations_t = NULL;
void *gf_db_connection = NULL;
@@ -660,13 +658,10 @@ find_recently_changed_files_freq(gfdb_conn_node_t *_conn_node,
if (db_operations_t->find_recently_changed_files_freq_op) {
ret = db_operations_t->find_recently_changed_files_freq_op(
- gf_db_connection,
- query_callback,
- _query_cbk_args,
- from_time,
- write_freq_thresold,
- read_freq_thresold,
- _clear_counters);
+ gf_db_connection, query_callback,
+ _query_cbk_args, from_time,
+ write_freq_thresold, read_freq_thresold,
+ _clear_counters);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED,
@@ -691,9 +686,10 @@ find_recently_changed_files_freq(gfdb_conn_node_t *_conn_node,
**/
int
-clear_files_heat (gfdb_conn_node_t *conn_node) {
- int ret = 0;
- gfdb_db_operations_t *db_operations = NULL;
+clear_files_heat (gfdb_conn_node_t *conn_node)
+{
+ int ret = 0;
+ gfdb_db_operations_t *db_operations = NULL;
void *gf_db_connection = NULL;
CHECK_CONN_NODE(conn_node);
@@ -705,7 +701,7 @@ clear_files_heat (gfdb_conn_node_t *conn_node) {
ret = db_operations->clear_files_heat_op (gf_db_connection);
if (ret) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
- LG_MSG_FIND_OP_FAILED,
+ LG_MSG_INSERT_OR_UPDATE_FAILED,
"Clear files heat operation failed");
}
}
@@ -728,8 +724,8 @@ clear_files_heat (gfdb_conn_node_t *conn_node) {
int
get_db_version (gfdb_conn_node_t *conn_node, char **version)
{
- int ret = 0;
- gfdb_db_operations_t *db_operations = NULL;
+ int ret = 0;
+ gfdb_db_operations_t *db_operations = NULL;
void *gf_db_connection = NULL;
CHECK_CONN_NODE(conn_node);
@@ -739,7 +735,7 @@ get_db_version (gfdb_conn_node_t *conn_node, char **version)
if (db_operations->get_db_version) {
ret = db_operations->get_db_version (gf_db_connection,
- version);
+ version);
if (ret < 0) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED,
@@ -751,11 +747,11 @@ get_db_version (gfdb_conn_node_t *conn_node, char **version)
}
int
-get_db_setting (gfdb_conn_node_t *conn_node, char *param_key,
+get_db_params (gfdb_conn_node_t *conn_node, char *param_key,
char **param_value)
{
- int ret = -1;
- gfdb_db_operations_t *db_operations = NULL;
+ int ret = -1;
+ gfdb_db_operations_t *db_operations = NULL;
void *gf_db_connection = NULL;
CHECK_CONN_NODE(conn_node);
@@ -763,9 +759,10 @@ get_db_setting (gfdb_conn_node_t *conn_node, char *param_key,
db_operations = &conn_node->gfdb_connection.gfdb_db_operations;
gf_db_connection = conn_node->gfdb_connection.gf_db_connection;
- if (db_operations->get_db_setting) {
- ret = db_operations->get_db_setting (gf_db_connection,
- param_key, param_value);
+ if (db_operations->get_db_params) {
+ ret = db_operations->get_db_params (gf_db_connection,
+ param_key,
+ param_value);
if (ret < 0) {
gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
LG_MSG_FIND_OP_FAILED,
@@ -777,6 +774,35 @@ get_db_setting (gfdb_conn_node_t *conn_node, char *param_key,
}
+int
+set_db_params (gfdb_conn_node_t *conn_node, char *param_key,
+ char *param_value)
+{
+ int ret = -1;
+ gfdb_db_operations_t *db_operations = NULL;
+ void *gf_db_connection = NULL;
+
+ CHECK_CONN_NODE(conn_node);
+
+ db_operations = &conn_node->gfdb_connection.gfdb_db_operations;
+ gf_db_connection = conn_node->gfdb_connection.gf_db_connection;
+
+ if (db_operations->set_db_params) {
+ ret = db_operations->set_db_params (gf_db_connection,
+ param_key,
+ param_value);
+ if (ret < 0) {
+ gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0,
+ LG_MSG_INSERT_OR_UPDATE_FAILED,
+ "Failed to set database setting");
+ }
+ }
+
+ return ret;
+}
+
+
+
static const
char *get_db_path_key()
@@ -795,7 +821,8 @@ void get_gfdb_methods (gfdb_methods_t *methods)
find_recently_changed_files_freq;
methods->clear_files_heat = clear_files_heat;
methods->get_db_version = get_db_version;
- methods->get_db_setting = get_db_setting;
+ methods->get_db_params = get_db_params;
+ methods->set_db_params = set_db_params;
methods->get_db_path_key = get_db_path_key;
/* Query Record related functions */