diff options
| author | Dan Lambright <dlambrig@redhat.com> | 2015-06-27 06:31:53 -0400 | 
|---|---|---|
| committer | Dan Lambright <dlambrig@redhat.com> | 2015-06-27 18:11:00 -0700 | 
| commit | 3da1a1cf339da77e47f71b245d4cac3f9dc1da38 (patch) | |
| tree | 8fd176c995973ac067c04ad3e092c590e7ef000f /libglusterfs/src | |
| parent | fc786da206f5851729a1cde6fbf6897bed9bcb3b (diff) | |
tier/ctr: Ignore creation of T file and Ctr Lookup heal improvememnts
This is a back port of 11334
1) Ignore creation of T file in ctr_mknod
2) Ignore lookup for T file in ctr_lookup
3) Ctr_lookup:
    a. If the gfid and pgfid in empty dont record
    b. Decreased log level for multiple heal attempts
    c. Inode/File heal happens after an expiry period, which is configurable.
    d. Hardlink heal happens after an expiry period, which is configurable.
> Change-Id: Id8eb5092e78beaec22d05f5283645081619e2452
> BUG: 1235269
> Signed-off-by: Joseph Fernandes <josferna@redhat.com>
> Reviewed-on: http://review.gluster.org/11334
> Tested-by: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Dan Lambright <dlambrig@redhat.com>
> Tested-by: Dan Lambright <dlambrig@redhat.com>
Change-Id: Ia28a5cf975e41d318906f707deca447aaa35630f
BUG: 1236288
Signed-off-by: Dan Lambright <dlambrig@redhat.com>
Reviewed-on: http://review.gluster.org/11446
Reviewed-by: Joseph Fernandes
Tested-by: Joseph Fernandes
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_data_store_types.h | 15 | ||||
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_sqlite3.c | 2 | ||||
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_sqlite3_helper.c | 49 | 
3 files changed, 46 insertions, 20 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_data_store_types.h b/libglusterfs/src/gfdb/gfdb_data_store_types.h index f642c63b049..fb41c385808 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store_types.h +++ b/libglusterfs/src/gfdb/gfdb_data_store_types.h @@ -26,6 +26,16 @@  #include "dict.h"  #include "libglusterfs-messages.h" +/* + * Helps in dynamically choosing log level + * */ +static inline gf_loglevel_t +_gfdb_log_level (gf_loglevel_t given_level, +                 gf_boolean_t ignore_level) +{ +        return (ignore_level) ? GF_LOG_DEBUG : given_level; +} +  typedef enum gf_db_operation {          GFDB_INVALID_DB_OP = -1,          /* Query DB OPS : All the Query DB_OP should be added */ @@ -71,8 +81,6 @@ typedef enum gf_db_operation {  #define GF_COL_LINK_UPDATE              "LINK_UPDATE" - -  /***********************Time related********************************/  /*1 sec = 1000000 microsec*/  #define GFDB_MICROSEC         1000000 @@ -305,6 +313,9 @@ typedef struct gfdb_db_record {          /* Global flag to Record/Not Record wind or wind time.           * This flag will overrule do_record_uwind_time*/          gf_boolean_t                    do_record_times; +        /* Ignoring errors while inserting. +         * */ +        gf_boolean_t                    ignore_errors;  } gfdb_db_record_t; diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3.c b/libglusterfs/src/gfdb/gfdb_sqlite3.c index 7eca03f40e2..94553fba70d 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3.c +++ b/libglusterfs/src/gfdb/gfdb_sqlite3.c @@ -176,8 +176,6 @@ sql_stmt_fini (char **sql_stmt)  /******************************************************************************   *                      DB Essential functions used by - *                      create/insert/delete/update/query functions - *                      > execute_sqlstmt ()   *                      > gf_open_sqlite3_conn ()   *                      > gf_close_sqlite3_conn ()   * ***************************************************************************/ diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3_helper.c b/libglusterfs/src/gfdb/gfdb_sqlite3_helper.c index f3e0e9711a9..40ee24c9627 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3_helper.c +++ b/libglusterfs/src/gfdb/gfdb_sqlite3_helper.c @@ -9,7 +9,7 @@  */  #include "gfdb_sqlite3_helper.h" -#include "libglusterfs-messages.h" +  #define GFDB_SQL_STMT_SIZE 256 @@ -309,7 +309,8 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,                     char                 *pargfid,                     char                 *basename,                     char                 *basepath, -                   gf_boolean_t         link_consistency) +                   gf_boolean_t         link_consistency, +                   gf_boolean_t         ignore_errors)  {          int ret = -1;          sqlite3_stmt *insert_stmt = NULL; @@ -332,8 +333,11 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          ret = sqlite3_prepare (sql_conn->sqlite3_db_conn, insert_str, -1,                                  &insert_stmt, 0);          if (ret != SQLITE_OK) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, -                        LG_MSG_PREPARE_FAILED, "Failed preparing insert " +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), +                        0, +                        LG_MSG_PREPARE_FAILED, +                        "Failed preparing insert "                          "statment %s : %s", insert_str,                          sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1; @@ -343,8 +347,11 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          /*Bind gfid*/          ret = sqlite3_bind_text (insert_stmt, 1, gfid, -1, NULL);          if (ret != SQLITE_OK) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, -                        LG_MSG_BINDING_FAILED, "Failed binding gfid %s : %s", +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), +                        0, +                        LG_MSG_BINDING_FAILED, +                        "Failed binding gfid %s : %s",                          gfid, sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1;                  goto out; @@ -353,8 +360,10 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          /*Bind pargfid*/          ret = sqlite3_bind_text (insert_stmt, 2, pargfid, -1, NULL);          if (ret != SQLITE_OK) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, -                        LG_MSG_BINDING_FAILED, "Failed binding parent gfid %s " +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), +                        0, LG_MSG_BINDING_FAILED, +                        "Failed binding parent gfid %s "                          ": %s", pargfid,                          sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1; @@ -364,8 +373,9 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          /*Bind basename*/          ret = sqlite3_bind_text (insert_stmt, 3, basename, -1, NULL);          if (ret != SQLITE_OK) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, -                        LG_MSG_BINDING_FAILED, +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), +                        0, LG_MSG_BINDING_FAILED,                          "Failed binding basename %s : %s", basename,                          sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1; @@ -375,8 +385,10 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          /*Bind basepath*/          ret = sqlite3_bind_text (insert_stmt, 4, basepath, -1, NULL);          if (ret != SQLITE_OK) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, -                        LG_MSG_BINDING_FAILED, "Failed binding basepath %s : " +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), 0, +                        LG_MSG_BINDING_FAILED, +                        "Failed binding basepath %s : "                          "%s", basepath,                          sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1; @@ -385,8 +397,11 @@ gf_sql_insert_link (gf_sql_connection_t  *sql_conn,          /*Execute the prepare statement*/          if (sqlite3_step (insert_stmt) != SQLITE_DONE) { -                gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_EXEC_FAILED, -                        "Failed executing the prepared stmt %s %s %s %s %s : %s", +                gf_msg (GFDB_STR_SQLITE3, +                        _gfdb_log_level (GF_LOG_ERROR, ignore_errors), +                        0, LG_MSG_EXEC_FAILED, +                        "Failed executing the prepared " +                        "stmt %s %s %s %s %s : %s",                          gfid, pargfid, basename, basepath, insert_str,                          sqlite3_errmsg (sql_conn->sqlite3_db_conn));                  ret = -1; @@ -777,7 +792,8 @@ gf_sql_insert_wind (gf_sql_connection_t  *sql_conn,                                          gfid_str, pargfid_str,                                          gfdb_db_record->file_name,                                          gfdb_db_record->file_path, -                                        gfdb_db_record->link_consistency); +                                        gfdb_db_record->link_consistency, +                                        gfdb_db_record->ignore_errors);                          if (ret) {                                  gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0,                                          LG_MSG_INSERT_FAILED, "Failed " @@ -836,7 +852,8 @@ gf_sql_insert_wind (gf_sql_connection_t  *sql_conn,                                          gfid_str, pargfid_str,                                          gfdb_db_record->file_name,                                          gfdb_db_record->file_path, -                                        gfdb_db_record->link_consistency); +                                        gfdb_db_record->link_consistency, +                                        gfdb_db_record->ignore_errors);                                  if (ret) {                                          gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR,                                                  0, LG_MSG_INSERT_FAILED,  | 
