diff options
Diffstat (limited to 'xlators/performance/write-behind/src/write-behind.c')
| -rw-r--r-- | xlators/performance/write-behind/src/write-behind.c | 44 | 
1 files changed, 40 insertions, 4 deletions
diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index 952de57b7b6..959826673a1 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -2880,6 +2880,7 @@ init (xlator_t *this)          wb_conf_t *conf = NULL;          char      *str = NULL;          int32_t    ret = -1; +        char      *def_val = NULL;          if ((this->children == NULL)              || this->children->next) { @@ -2939,7 +2940,20 @@ init (xlator_t *this)                  conf->disable_till);          /* configure 'option window-size <size>' */ -        conf->window_size = WB_WINDOW_SIZE;  +        if (xlator_get_volopt_info (&this->volume_options, "cache-size", +                                   &def_val, NULL)) { +                gf_log (this->name, GF_LOG_ERROR, "Default value of " +                         "cache-size not found"); +                return -1; +        } else { +                if (gf_string2bytesize (def_val, &conf->window_size)) { +                        gf_log (this->name, GF_LOG_ERROR, "Default value of " +                                 "cache-size corrupt"); +                        return -1; +                } +        } + +          ret = dict_get_str (options, "cache-size",                               &str);          if (ret == 0) { @@ -2973,7 +2987,21 @@ init (xlator_t *this)          }          /* configure 'option flush-behind <on/off>' */ -        conf->flush_behind = 1; + +        if (xlator_get_volopt_info (&this->volume_options, "flush-behind", +                                   &def_val, NULL)) { +                gf_log (this->name, GF_LOG_ERROR, "Default value of " +                         "cache-size not found"); +                return -1; +        } else { +                if (gf_string2boolean (def_val, &conf->flush_behind)) { +                        gf_log (this->name, GF_LOG_ERROR, "Default value of " +                                 "cache-size corrupt"); +                return -1; +                } +        } + +          ret = dict_get_str (options, "flush-behind",                               &str);          if (ret == 0) { @@ -3049,12 +3077,20 @@ struct xlator_dumpops dumpops = {  struct volume_options options[] = {          { .key  = {"flush-behind"},  -          .type = GF_OPTION_TYPE_BOOL +          .type = GF_OPTION_TYPE_BOOL, +          .default_value = "on", +          .description = "If this option is set ON, instructs write-behind " +                          "translator to perform flush in background, by " +                          "returning success (or any errors, if any of " +                          "previous  writes were failed) to application even " +                          "before flush is sent to backend filesystem. "          },          { .key  = {"cache-size", "window-size"},             .type = GF_OPTION_TYPE_SIZET,             .min  = 512 * GF_UNIT_KB,  -          .max  = 1 * GF_UNIT_GB  +          .max  = 1 * GF_UNIT_GB, +          .default_value = "1MB", +          .description = "Size of the per-file write-behind buffer. "          },          { .key = {"disable-for-first-nbytes"},            .type = GF_OPTION_TYPE_SIZET,  | 
