diff options
author | Gluster Ant <bugzilla-bot@gluster.org> | 2018-09-12 17:52:45 +0530 |
---|---|---|
committer | Nigel Babu <nigelb@redhat.com> | 2018-09-12 17:52:45 +0530 |
commit | e16868dede6455cab644805af6fe1ac312775e13 (patch) | |
tree | 15aebdb4fff2d87cf8a72f836816b3aa634da58d /libglusterfs/src/gfdb/gfdb_data_store_helper.c | |
parent | 45a71c0548b6fd2c757aa2e7b7671a1411948894 (diff) |
Land part 2 of clang-format changes
Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4
Signed-off-by: Nigel Babu <nigelb@redhat.com>
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_data_store_helper.c')
-rw-r--r-- | libglusterfs/src/gfdb/gfdb_data_store_helper.c | 773 |
1 files changed, 371 insertions, 402 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_data_store_helper.c b/libglusterfs/src/gfdb/gfdb_data_store_helper.c index 39a97ff73d9..fb01a6c699b 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store_helper.c +++ b/libglusterfs/src/gfdb/gfdb_data_store_helper.c @@ -9,151 +9,139 @@ * ****************************************************************************/ /*Create a single link info structure*/ -gfdb_link_info_t* -gfdb_link_info_new () +gfdb_link_info_t * +gfdb_link_info_new() { - gfdb_link_info_t *link_info = NULL; + gfdb_link_info_t *link_info = NULL; - link_info = GF_CALLOC (1, sizeof(gfdb_link_info_t), - gf_mt_gfdb_link_info_t); - if (!link_info) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, ENOMEM, - LG_MSG_NO_MEMORY, "Memory allocation failed for " - "link_info "); - goto out; - } + link_info = GF_CALLOC(1, sizeof(gfdb_link_info_t), gf_mt_gfdb_link_info_t); + if (!link_info) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, ENOMEM, LG_MSG_NO_MEMORY, + "Memory allocation failed for " + "link_info "); + goto out; + } - INIT_LIST_HEAD (&link_info->list); + INIT_LIST_HEAD(&link_info->list); out: - return link_info; + return link_info; } /*Destroy a link info structure*/ void gfdb_link_info_free(gfdb_link_info_t *link_info) { - GF_FREE (link_info); + GF_FREE(link_info); } - /*Function to create the query_record*/ gfdb_query_record_t * gfdb_query_record_new() { - int ret = -1; - gfdb_query_record_t *query_record = NULL; - - query_record = GF_CALLOC (1, sizeof(gfdb_query_record_t), - gf_mt_gfdb_query_record_t); - if (!query_record) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, ENOMEM, - LG_MSG_NO_MEMORY, "Memory allocation failed for " - "query_record "); - goto out; - } + int ret = -1; + gfdb_query_record_t *query_record = NULL; - INIT_LIST_HEAD (&query_record->link_list); + query_record = GF_CALLOC(1, sizeof(gfdb_query_record_t), + gf_mt_gfdb_query_record_t); + if (!query_record) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, ENOMEM, LG_MSG_NO_MEMORY, + "Memory allocation failed for " + "query_record "); + goto out; + } - ret = 0; + INIT_LIST_HEAD(&query_record->link_list); + + ret = 0; out: - if (ret == -1) { - GF_FREE (query_record); - } - return query_record; + if (ret == -1) { + GF_FREE(query_record); + } + return query_record; } - /*Function to delete a single linkinfo from list*/ static void -gfdb_delete_linkinfo_from_list (gfdb_link_info_t **link_info) +gfdb_delete_linkinfo_from_list(gfdb_link_info_t **link_info) { - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, link_info, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, *link_info, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, link_info, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, *link_info, out); - /*Remove hard link from list*/ - list_del(&(*link_info)->list); - gfdb_link_info_free (*link_info); - link_info = NULL; + /*Remove hard link from list*/ + list_del(&(*link_info)->list); + gfdb_link_info_free(*link_info); + link_info = NULL; out: - return; + return; } - /*Function to destroy link_info list*/ void -gfdb_free_link_info_list (gfdb_query_record_t *query_record) +gfdb_free_link_info_list(gfdb_query_record_t *query_record) { - gfdb_link_info_t *link_info = NULL; - gfdb_link_info_t *temp = NULL; + gfdb_link_info_t *link_info = NULL; + gfdb_link_info_t *temp = NULL; - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); - list_for_each_entry_safe(link_info, temp, - &query_record->link_list, list) - { - gfdb_delete_linkinfo_from_list (&link_info); - link_info = NULL; - } + list_for_each_entry_safe(link_info, temp, &query_record->link_list, list) + { + gfdb_delete_linkinfo_from_list(&link_info); + link_info = NULL; + } out: - return; + return; } - - /* Function to add linkinfo to the query record */ int -gfdb_add_link_to_query_record (gfdb_query_record_t *query_record, - uuid_t pgfid, - char *base_name) +gfdb_add_link_to_query_record(gfdb_query_record_t *query_record, uuid_t pgfid, + char *base_name) { - int ret = -1; - gfdb_link_info_t *link_info = NULL; - int base_name_len = 0; + int ret = -1; + gfdb_link_info_t *link_info = NULL; + int base_name_len = 0; - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, pgfid, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, base_name, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, pgfid, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, base_name, out); - link_info = gfdb_link_info_new (); - if (!link_info) { - goto out; - } + link_info = gfdb_link_info_new(); + if (!link_info) { + goto out; + } - gf_uuid_copy (link_info->pargfid, pgfid); - base_name_len = strlen (base_name); - memcpy (link_info->file_name, base_name, base_name_len); - link_info->file_name[base_name_len] = '\0'; + gf_uuid_copy(link_info->pargfid, pgfid); + base_name_len = strlen(base_name); + memcpy(link_info->file_name, base_name, base_name_len); + link_info->file_name[base_name_len] = '\0'; - list_add_tail (&link_info->list, - &query_record->link_list); + list_add_tail(&link_info->list, &query_record->link_list); - query_record->link_count++; + query_record->link_count++; - ret = 0; + ret = 0; out: - if (ret) { - gfdb_link_info_free (link_info); - link_info = NULL; - } - return ret; + if (ret) { + gfdb_link_info_free(link_info); + link_info = NULL; + } + return ret; } - - /*Function to destroy query record*/ void gfdb_query_record_free(gfdb_query_record_t *query_record) { - if (query_record) { - gfdb_free_link_info_list (query_record); - GF_FREE (query_record); - } + if (query_record) { + gfdb_free_link_info_list(query_record); + GF_FREE(query_record); + } } - /****************************************************************************** SERIALIZATION/DE-SERIALIZATION OF QUERY RECORD *******************************************************************************/ @@ -197,40 +185,39 @@ gfdb_query_record_free(gfdb_query_record_t *query_record) * ****************************************************************************/ #define GFDB_QUERY_RECORD_FOOTER 0xBAADF00D -#define UUID_LEN 16 +#define UUID_LEN 16 /*Function to get the potential length of the serialized buffer*/ static int32_t -gfdb_query_record_serialized_length (gfdb_query_record_t *query_record) +gfdb_query_record_serialized_length(gfdb_query_record_t *query_record) { - int32_t len = -1; - gfdb_link_info_t *link_info = NULL; - - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); + int32_t len = -1; + gfdb_link_info_t *link_info = NULL; - /* Length of GFID */ - len = UUID_LEN; + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); - /* length of number of links*/ - len += sizeof (int32_t); + /* Length of GFID */ + len = UUID_LEN; - list_for_each_entry (link_info, &query_record->link_list, list) { + /* length of number of links*/ + len += sizeof(int32_t); - /* length of PFID */ - len += UUID_LEN; + list_for_each_entry(link_info, &query_record->link_list, list) + { + /* length of PFID */ + len += UUID_LEN; - /* Add size of base name length*/ - len += sizeof (int32_t); + /* Add size of base name length*/ + len += sizeof(int32_t); - /* Length of base_name */ - len += strlen (link_info->file_name); - - } + /* Length of base_name */ + len += strlen(link_info->file_name); + } - /* length of footer */ - len += sizeof (int32_t); + /* length of footer */ + len += sizeof(int32_t); out: - return len; + return len; } /* Function for serializing query record. @@ -259,210 +246,200 @@ out: * * */ static int -gfdb_query_record_serialize (gfdb_query_record_t *query_record, - char **in_buffer) +gfdb_query_record_serialize(gfdb_query_record_t *query_record, char **in_buffer) { - gfdb_link_info_t *link_info = NULL; - int count = -1; - int base_name_len = 0; - int buffer_length = 0; - int footer = GFDB_QUERY_RECORD_FOOTER; - char *buffer = NULL; - char *ret_buffer = NULL; - - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, - (query_record->link_count > 0), out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, in_buffer, out); - - - /* Calculate the total length of the serialized buffer */ - buffer_length = gfdb_query_record_serialized_length (query_record); - if (buffer_length <= 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to calculate the length of " - "serialized buffer"); - goto out; - } - - /* Allocate memory to the serialized buffer */ - ret_buffer = GF_CALLOC (1, buffer_length, gf_common_mt_char); - if (!ret_buffer) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Memory allocation failed for " - "serialized buffer."); - goto out; - } - - buffer = ret_buffer; - - count = 0; - - /* Copying the GFID */ - memcpy (buffer, query_record->gfid, UUID_LEN); + gfdb_link_info_t *link_info = NULL; + int count = -1; + int base_name_len = 0; + int buffer_length = 0; + int footer = GFDB_QUERY_RECORD_FOOTER; + char *buffer = NULL; + char *ret_buffer = NULL; + + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, (query_record->link_count > 0), out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, in_buffer, out); + + /* Calculate the total length of the serialized buffer */ + buffer_length = gfdb_query_record_serialized_length(query_record); + if (buffer_length <= 0) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to calculate the length of " + "serialized buffer"); + goto out; + } + + /* Allocate memory to the serialized buffer */ + ret_buffer = GF_CALLOC(1, buffer_length, gf_common_mt_char); + if (!ret_buffer) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Memory allocation failed for " + "serialized buffer."); + goto out; + } + + buffer = ret_buffer; + + count = 0; + + /* Copying the GFID */ + memcpy(buffer, query_record->gfid, UUID_LEN); + buffer += UUID_LEN; + count += UUID_LEN; + + /* Copying the number of links */ + memcpy(buffer, &query_record->link_count, sizeof(int32_t)); + buffer += sizeof(int32_t); + count += sizeof(int32_t); + + list_for_each_entry(link_info, &query_record->link_list, list) + { + /* Copying the PFID */ + memcpy(buffer, link_info->pargfid, UUID_LEN); buffer += UUID_LEN; count += UUID_LEN; - /* Copying the number of links */ - memcpy (buffer, &query_record->link_count, sizeof (int32_t)); - buffer += sizeof (int32_t); - count += sizeof (int32_t); - - list_for_each_entry (link_info, &query_record->link_list, list) { - - /* Copying the PFID */ - memcpy(buffer, link_info->pargfid, UUID_LEN); - buffer += UUID_LEN; - count += UUID_LEN; - - /* Copying base name length*/ - base_name_len = strlen (link_info->file_name); - memcpy (buffer, &base_name_len, sizeof (int32_t)); - buffer += sizeof (int32_t); - count += sizeof (int32_t); + /* Copying base name length*/ + base_name_len = strlen(link_info->file_name); + memcpy(buffer, &base_name_len, sizeof(int32_t)); + buffer += sizeof(int32_t); + count += sizeof(int32_t); - /* Length of base_name */ - memcpy(buffer, link_info->file_name, base_name_len); - buffer += base_name_len; - count += base_name_len; + /* Length of base_name */ + memcpy(buffer, link_info->file_name, base_name_len); + buffer += base_name_len; + count += base_name_len; + } - } - - /* Copying the Footer of the record */ - memcpy (buffer, &footer, sizeof (int32_t)); - buffer += sizeof (int32_t); - count += sizeof (int32_t); + /* Copying the Footer of the record */ + memcpy(buffer, &footer, sizeof(int32_t)); + buffer += sizeof(int32_t); + count += sizeof(int32_t); out: - if (count < 0) { - GF_FREE (ret_buffer); - ret_buffer = NULL; - } - *in_buffer = ret_buffer; - return count; + if (count < 0) { + GF_FREE(ret_buffer); + ret_buffer = NULL; + } + *in_buffer = ret_buffer; + return count; } static gf_boolean_t -is_serialized_buffer_valid (char *in_buffer, int buffer_length) { - gf_boolean_t ret = _gf_false; - int footer = 0; - - /* Read the footer */ - in_buffer += (buffer_length - sizeof (int32_t)); - memcpy (&footer, in_buffer, sizeof (int32_t)); - - /* - * if the footer is not GFDB_QUERY_RECORD_FOOTER - * then the serialized record is invalid - * - * */ - if (footer != GFDB_QUERY_RECORD_FOOTER) { - goto out; - } - - ret = _gf_true; +is_serialized_buffer_valid(char *in_buffer, int buffer_length) +{ + gf_boolean_t ret = _gf_false; + int footer = 0; + + /* Read the footer */ + in_buffer += (buffer_length - sizeof(int32_t)); + memcpy(&footer, in_buffer, sizeof(int32_t)); + + /* + * if the footer is not GFDB_QUERY_RECORD_FOOTER + * then the serialized record is invalid + * + * */ + if (footer != GFDB_QUERY_RECORD_FOOTER) { + goto out; + } + + ret = _gf_true; out: - return ret; + return ret; } - static int -gfdb_query_record_deserialize (char *in_buffer, - int buffer_length, - gfdb_query_record_t **query_record) +gfdb_query_record_deserialize(char *in_buffer, int buffer_length, + gfdb_query_record_t **query_record) { - int ret = -1; - char *buffer = NULL; - int i = 0; - gfdb_link_info_t *link_info = NULL; - int count = 0; - int base_name_len = 0; - gfdb_query_record_t *ret_qrecord = NULL; - - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, in_buffer, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, (buffer_length > 0), out); - - if (!is_serialized_buffer_valid (in_buffer, buffer_length)) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Invalid serialized query record"); - goto out; + int ret = -1; + char *buffer = NULL; + int i = 0; + gfdb_link_info_t *link_info = NULL; + int count = 0; + int base_name_len = 0; + gfdb_query_record_t *ret_qrecord = NULL; + + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, in_buffer, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, (buffer_length > 0), out); + + if (!is_serialized_buffer_valid(in_buffer, buffer_length)) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Invalid serialized query record"); + goto out; + } + + buffer = in_buffer; + + ret_qrecord = gfdb_query_record_new(); + if (!ret_qrecord) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to allocate space to " + "gfdb_query_record_t"); + goto out; + } + + /* READ GFID */ + memcpy((ret_qrecord)->gfid, buffer, UUID_LEN); + buffer += UUID_LEN; + count += UUID_LEN; + + /* Read the number of link */ + memcpy(&(ret_qrecord->link_count), buffer, sizeof(int32_t)); + buffer += sizeof(int32_t); + count += sizeof(int32_t); + + /* Read all the links */ + for (i = 0; i < ret_qrecord->link_count; i++) { + if (count >= buffer_length) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Invalid serialized " + "query record"); + ret = -1; + goto out; } - buffer = in_buffer; - - ret_qrecord = gfdb_query_record_new (); - if (!ret_qrecord) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to allocate space to " - "gfdb_query_record_t"); - goto out; + link_info = gfdb_link_info_new(); + if (!link_info) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to create link_info"); + goto out; } - /* READ GFID */ - memcpy ((ret_qrecord)->gfid, buffer, UUID_LEN); + /* READ PGFID */ + memcpy(link_info->pargfid, buffer, UUID_LEN); buffer += UUID_LEN; count += UUID_LEN; - /* Read the number of link */ - memcpy (&(ret_qrecord->link_count), buffer, sizeof (int32_t)); - buffer += sizeof (int32_t); - count += sizeof (int32_t); - - /* Read all the links */ - for (i = 0; i < ret_qrecord->link_count; i++) { - if (count >= buffer_length) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Invalid serialized " - "query record"); - ret = -1; - goto out; - } - - link_info = gfdb_link_info_new (); - if (!link_info) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to create link_info"); - goto out; - } - - /* READ PGFID */ - memcpy (link_info->pargfid, buffer, UUID_LEN); - buffer += UUID_LEN; - count += UUID_LEN; - - /* Read base name length */ - memcpy (&base_name_len, buffer, sizeof (int32_t)); - buffer += sizeof (int32_t); - count += sizeof (int32_t); - - /* READ basename */ - memcpy (link_info->file_name, buffer, base_name_len); - buffer += base_name_len; - count += base_name_len; - link_info->file_name[base_name_len] = '\0'; - - /* Add link_info to the list */ - list_add_tail (&link_info->list, - &(ret_qrecord->link_list)); - - /* Resetting link_info */ - link_info = NULL; - } - - ret = 0; -out: - if (ret) { - gfdb_query_record_free (ret_qrecord); - ret_qrecord = NULL; - } - *query_record = ret_qrecord; - return ret; -} + /* Read base name length */ + memcpy(&base_name_len, buffer, sizeof(int32_t)); + buffer += sizeof(int32_t); + count += sizeof(int32_t); + /* READ basename */ + memcpy(link_info->file_name, buffer, base_name_len); + buffer += base_name_len; + count += base_name_len; + link_info->file_name[base_name_len] = '\0'; + /* Add link_info to the list */ + list_add_tail(&link_info->list, &(ret_qrecord->link_list)); + /* Resetting link_info */ + link_info = NULL; + } + ret = 0; +out: + if (ret) { + gfdb_query_record_free(ret_qrecord); + ret_qrecord = NULL; + } + *query_record = ret_qrecord; + return ret; +} /* Function to write query record to file * @@ -477,57 +454,54 @@ out: * * */ int -gfdb_write_query_record (int fd, - gfdb_query_record_t *query_record) +gfdb_write_query_record(int fd, gfdb_query_record_t *query_record) { - int ret = -1; - int buffer_len = 0; - char *buffer = NULL; - int write_len = 0; - char *write_buffer = NULL; - - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, (fd >= 0), out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); - - buffer_len = gfdb_query_record_serialize (query_record, &buffer); - if (buffer_len < 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to serialize query record"); - goto out; - } - - /* Serialize the buffer length and write to file */ - ret = write (fd, &buffer_len, sizeof (int32_t)); + int ret = -1; + int buffer_len = 0; + char *buffer = NULL; + int write_len = 0; + char *write_buffer = NULL; + + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, (fd >= 0), out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); + + buffer_len = gfdb_query_record_serialize(query_record, &buffer); + if (buffer_len < 0) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to serialize query record"); + goto out; + } + + /* Serialize the buffer length and write to file */ + ret = write(fd, &buffer_len, sizeof(int32_t)); + if (ret < 0) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to write buffer length" + " to file"); + goto out; + } + + /* Write the serialized query record to file */ + write_len = buffer_len; + write_buffer = buffer; + while ((ret = write(fd, write_buffer, write_len)) < write_len) { if (ret < 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to write buffer length" - " to file"); - goto out; + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, errno, LG_MSG_DB_ERROR, + "Failed to write serialized " + "query record to file"); + goto out; } - /* Write the serialized query record to file */ - write_len = buffer_len; - write_buffer = buffer; - while ((ret = write (fd, write_buffer, write_len)) < write_len) { - if (ret < 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, errno, - LG_MSG_DB_ERROR, "Failed to write serialized " - "query record to file"); - goto out; - } - - write_buffer += ret; - write_len -= ret; - } + write_buffer += ret; + write_len -= ret; + } - ret = 0; + ret = 0; out: - GF_FREE (buffer); - return ret; + GF_FREE(buffer); + return ret; } - - /* Function to read query record from file. * Allocates memory to query record and * returns length of serialized query record when successful @@ -535,86 +509,81 @@ out: * Return 0 when reached EOF. * */ int -gfdb_read_query_record (int fd, - gfdb_query_record_t **query_record) +gfdb_read_query_record(int fd, gfdb_query_record_t **query_record) { - int ret = -1; - int buffer_len = 0; - int read_len = 0; - char *buffer = NULL; - char *read_buffer = NULL; - - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, (fd >= 0), out); - GF_VALIDATE_OR_GOTO (GFDB_DATA_STORE, query_record, out); - - - /* Read serialized query record length from the file*/ - ret = sys_read (fd, &buffer_len, sizeof (int32_t)); + int ret = -1; + int buffer_len = 0; + int read_len = 0; + char *buffer = NULL; + char *read_buffer = NULL; + + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, (fd >= 0), out); + GF_VALIDATE_OR_GOTO(GFDB_DATA_STORE, query_record, out); + + /* Read serialized query record length from the file*/ + ret = sys_read(fd, &buffer_len, sizeof(int32_t)); + if (ret < 0) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed reading buffer length" + " from file"); + goto out; + } + /* EOF */ + else if (ret == 0) { + ret = 0; + goto out; + } + + /* Assumed sane range is 1B - 10MB */ + if ((buffer_len <= 0) || (buffer_len > (10 * 1024 * 1024))) { + ret = -1; + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "buffer length range is out of bound %d", buffer_len); + goto out; + } + + /* Allocating memory to the serialization buffer */ + buffer = GF_CALLOC(1, buffer_len, gf_common_mt_char); + if (!buffer) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to allocate space to " + "serialized buffer"); + goto out; + } + + /* Read the serialized query record from file */ + read_len = buffer_len; + read_buffer = buffer; + while ((ret = sys_read(fd, read_buffer, read_len)) < read_len) { + /*Any error */ if (ret < 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed reading buffer length" - " from file"); - goto out; + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, errno, LG_MSG_DB_ERROR, + "Failed to read serialized " + "query record from file"); + goto out; } /* EOF */ else if (ret == 0) { - ret = 0; - goto out; + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Invalid query record or " + "corrupted query file"); + ret = -1; + goto out; } - /* Assumed sane range is 1B - 10MB */ - if ((buffer_len <= 0) || (buffer_len > (10 * 1024 * 1024))) { - ret = -1; - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, - "buffer length range is out of bound %d", buffer_len); - goto out; - } - - /* Allocating memory to the serialization buffer */ - buffer = GF_CALLOC (1, buffer_len, gf_common_mt_char); - if (!buffer) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to allocate space to " - "serialized buffer"); - goto out; - } + read_buffer += ret; + read_len -= ret; + } + ret = gfdb_query_record_deserialize(buffer, buffer_len, query_record); + if (ret) { + gf_msg(GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_DB_ERROR, + "Failed to de-serialize query record"); + goto out; + } - /* Read the serialized query record from file */ - read_len = buffer_len; - read_buffer = buffer; - while ((ret = sys_read (fd, read_buffer, read_len)) < read_len) { - - /*Any error */ - if (ret < 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, errno, - LG_MSG_DB_ERROR, "Failed to read serialized " - "query record from file"); - goto out; - } - /* EOF */ - else if (ret == 0) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Invalid query record or " - "corrupted query file"); - ret = -1; - goto out; - } - - read_buffer += ret; - read_len -= ret; - } - - ret = gfdb_query_record_deserialize (buffer, buffer_len, - query_record); - if (ret) { - gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, - LG_MSG_DB_ERROR, "Failed to de-serialize query record"); - goto out; - } - - ret = buffer_len; + ret = buffer_len; out: - GF_FREE (buffer); - return ret; + GF_FREE(buffer); + return ret; } |