diff options
| author | Avra Sengupta <asengupt@redhat.com> | 2014-02-19 16:30:11 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-04-11 16:29:17 -0700 | 
| commit | 29bccc2ed18eedc40e83d2f0d35327037a322384 (patch) | |
| tree | 207829c5a0535af28cbad6de90497d2f48093d1a /libglusterfs/src/store.c | |
| parent | 2045c9ea1c7c3aac9d377070df6f0ee99619f421 (diff) | |
gluster: GlusterFS Volume Snapshot Feature
This is the initial patch for the Snapshot feature. Current patch
includes following features:
* Snapshot create
* Snapshot delete
* Snapshot restore
* Snapshot list
* Snapshot info
* Snapshot status
* Snapshot config
Change-Id: I2f46920c0d61c515f6a60e0f8b46fff886d9f6a9
BUG: 1061685
Signed-off-by: shishir gowda <sgowda@redhat.com>
Signed-off-by: Sachin Pandit <spandit@redhat.com>
Signed-off-by: Vijaikumar M <vmallika@redhat.com>
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Signed-off-by: Rajesh Joseph <rjoseph@redhat.com>
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Signed-off-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-on: http://review.gluster.org/7128
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs/src/store.c')
| -rw-r--r-- | libglusterfs/src/store.c | 33 | 
1 files changed, 25 insertions, 8 deletions
diff --git a/libglusterfs/src/store.c b/libglusterfs/src/store.c index 66a5906a327..5beafaf3551 100644 --- a/libglusterfs/src/store.c +++ b/libglusterfs/src/store.c @@ -168,10 +168,12 @@ int  gf_store_read_and_tokenize (FILE *file, char *str, char **iter_key,                              char **iter_val, gf_store_op_errno_t *store_errno)  { -        int32_t     ret = -1; -        char        *savetok = NULL; -        char        *key = NULL; -        char        *value = NULL; +        int32_t     ret         =   -1; +        char        *savetok    = NULL; +        char        *key        = NULL; +        char        *value      = NULL; +        char        *temp       = NULL; +        size_t       str_len    =    0;          GF_ASSERT (file);          GF_ASSERT (str); @@ -179,13 +181,17 @@ gf_store_read_and_tokenize (FILE *file, char *str, char **iter_key,          GF_ASSERT (iter_val);          GF_ASSERT (store_errno); -        ret = fscanf (file, "%s", str); -        if (ret <= 0 || feof (file)) { +        temp = fgets (str, PATH_MAX, file); +        if (temp == NULL || feof (file)) {                  ret = -1;                  *store_errno = GD_STORE_EOF;                  goto out;          } +        str_len = strlen(str); +        str[str_len - 1] = '\0'; +        /* Truncate the "\n", as fgets stores "\n" in str */ +          key = strtok_r (str, "=", &savetok);          if (!key) {                  ret = -1; @@ -253,8 +259,13 @@ gf_store_retrieve_value (gf_store_handle_t *handle, char *key, char **value)                  goto out;          } -        scan_str = GF_CALLOC (1, st.st_size, +        /* "st.st_size + 1" is used as we are fetching each +         * line of a file using fgets, fgets will append "\0" +         * to the end of the string +         */ +        scan_str = GF_CALLOC (1, st.st_size + 1,                                gf_common_mt_char); +          if (scan_str == NULL) {                  ret = -1;                  store_errno = GD_STORE_ENOMEM; @@ -531,7 +542,11 @@ gf_store_iter_get_next (gf_store_iter_t *iter, char  **key, char **value,                  goto out;          } -        scan_str = GF_CALLOC (1, st.st_size, +        /* "st.st_size + 1" is used as we are fetching each +         * line of a file using fgets, fgets will append "\0" +         * to the end of the string +         */ +        scan_str = GF_CALLOC (1, st.st_size + 1,                                gf_common_mt_char);          if (!scan_str) {                  ret = -1; @@ -595,7 +610,9 @@ gf_store_iter_get_matching (gf_store_iter_t *iter, char *key, char **value)                          goto out;                  }                  GF_FREE (tmp_key); +                tmp_key = NULL;                  GF_FREE (tmp_value); +                tmp_value = NULL;                  ret = gf_store_iter_get_next (iter, &tmp_key, &tmp_value,                                                NULL);          }  | 
