diff options
Diffstat (limited to 'xlators/performance/io-cache/src/io-cache.c')
-rw-r--r-- | xlators/performance/io-cache/src/io-cache.c | 406 |
1 files changed, 201 insertions, 205 deletions
diff --git a/xlators/performance/io-cache/src/io-cache.c b/xlators/performance/io-cache/src/io-cache.c index 4faf1d087ef..be7227e9948 100644 --- a/xlators/performance/io-cache/src/io-cache.c +++ b/xlators/performance/io-cache/src/io-cache.c @@ -56,9 +56,9 @@ ioc_inode_reupdate (ioc_inode_t *ioc_inode) { ioc_table_t *table = ioc_inode->table; - list_add_tail (&ioc_inode->inode_lru, + list_add_tail (&ioc_inode->inode_lru, &table->inode_lru[ioc_inode->weight]); - + return ioc_inode; } @@ -81,7 +81,7 @@ ioc_get_inode (dict_t *dict, char *name) } ioc_table_unlock (table); } - + return ioc_inode; } @@ -103,7 +103,7 @@ ioc_inode_need_revalidate (ioc_inode_t *ioc_inode) /* * __ioc_inode_flush - flush all the cached pages of the given inode * - * @ioc_inode: + * @ioc_inode: * * assumes lock is held */ @@ -117,25 +117,25 @@ __ioc_inode_flush (ioc_inode_t *ioc_inode) list_for_each_entry_safe (curr, next, &ioc_inode->cache.page_lru, page_lru) { ret = ioc_page_destroy (curr); - - if (ret != -1) + + if (ret != -1) destroy_size += ret; } - + return destroy_size; } void ioc_inode_flush (ioc_inode_t *ioc_inode) { - int64_t destroy_size = 0; + int64_t destroy_size = 0; ioc_inode_lock (ioc_inode); { destroy_size = __ioc_inode_flush (ioc_inode); } ioc_inode_unlock (ioc_inode); - + if (destroy_size) { ioc_table_lock (ioc_inode->table); { @@ -188,7 +188,7 @@ ioc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, const char *path = NULL; ioc_local_t *local = NULL; - if (op_ret != 0) + if (op_ret != 0) goto out; local = frame->local; @@ -212,14 +212,14 @@ ioc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { __inode_ctx_get (inode, this, &tmp_ioc_inode); ioc_inode = (ioc_inode_t *)(long)tmp_ioc_inode; - + if (!ioc_inode) { weight = ioc_get_priority (table, path); - + ioc_inode = ioc_inode_update (table, inode, weight); - __inode_ctx_put (inode, this, + __inode_ctx_put (inode, this, (uint64_t)(long)ioc_inode); } } @@ -236,20 +236,20 @@ ioc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } ioc_inode_unlock (ioc_inode); - cache_still_valid = ioc_cache_still_valid (ioc_inode, + cache_still_valid = ioc_cache_still_valid (ioc_inode, stbuf); - + if (!cache_still_valid) { ioc_inode_flush (ioc_inode); - } - + } + ioc_table_lock (ioc_inode->table); { list_move_tail (&ioc_inode->inode_lru, &table->inode_lru[ioc_inode->weight]); } ioc_table_unlock (ioc_inode->table); - + out: if (frame->local != NULL) { local = frame->local; @@ -261,7 +261,7 @@ out: return 0; } -int32_t +int32_t ioc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req) { @@ -298,7 +298,7 @@ unwind: } /* - * ioc_forget - + * ioc_forget - * * @frame: * @this: @@ -314,13 +314,13 @@ ioc_forget (xlator_t *this, inode_t *inode) if (ioc_inode) ioc_inode_destroy ((ioc_inode_t *)(long)ioc_inode); - + return 0; } -/* - * ioc_cache_validate_cbk - +/* + * ioc_cache_validate_cbk - * * @frame: * @cookie: @@ -343,13 +343,13 @@ ioc_cache_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, ioc_inode = local->inode; local_stbuf = stbuf; - if ((op_ret == -1) || + if ((op_ret == -1) || ((op_ret >= 0) && !ioc_cache_still_valid(ioc_inode, stbuf))) { gf_log (ioc_inode->table->xl->name, GF_LOG_DEBUG, "cache for inode(%p) is invalid. flushing all pages", ioc_inode); - /* NOTE: only pages with no waiting frames are flushed by - * ioc_inode_flush. page_fault will be generated for all + /* NOTE: only pages with no waiting frames are flushed by + * ioc_inode_flush. page_fault will be generated for all * the pages which have waiting frames by ioc_inode_wakeup() */ ioc_inode_lock (ioc_inode); @@ -374,7 +374,7 @@ ioc_cache_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret < 0) local_stbuf = NULL; - + ioc_inode_lock (ioc_inode); { gettimeofday (&ioc_inode->cache.tv, NULL); @@ -382,9 +382,9 @@ ioc_cache_validate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, ioc_inode_unlock (ioc_inode); ioc_inode_wakeup (frame, ioc_inode, local_stbuf); - - /* any page-fault initiated by ioc_inode_wakeup() will have its own - * fd_ref on fd, safe to unref validate frame's private copy + + /* any page-fault initiated by ioc_inode_wakeup() will have its own + * fd_ref on fd, safe to unref validate frame's private copy */ fd_unref (local->fd); @@ -409,9 +409,9 @@ ioc_wait_on_inode (ioc_inode_t *ioc_inode, ioc_page_t *page) } trav = trav->next; } - + if (!page_found) { - waiter = GF_CALLOC (1, sizeof (ioc_waitq_t), + waiter = GF_CALLOC (1, sizeof (ioc_waitq_t), gf_ioc_mt_ioc_waitq_t); if (waiter == NULL) { gf_log (ioc_inode->table->xl->name, GF_LOG_ERROR, @@ -425,7 +425,7 @@ ioc_wait_on_inode (ioc_inode_t *ioc_inode, ioc_page_t *page) ioc_inode->waitq = waiter; } -out: +out: return ret; } @@ -472,7 +472,7 @@ ioc_cache_validate (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, validate_local->fd = fd_ref (fd); validate_local->inode = ioc_inode; validate_frame->local = validate_local; - + STACK_WIND (validate_frame, ioc_cache_validate_cbk, FIRST_CHILD (frame->this), FIRST_CHILD (frame->this)->fops->fstat, fd); @@ -487,30 +487,29 @@ is_match (const char *path, const char *pattern) int32_t ret = 0; ret = fnmatch (pattern, path, FNM_NOESCAPE); - + return (ret == 0); } uint32_t ioc_get_priority (ioc_table_t *table, const char *path) { - uint32_t priority = 0; + uint32_t priority = 1; struct ioc_priority *curr = NULL; - - if (list_empty(&table->priority_list)) { - priority = 1; - } - else { - list_for_each_entry (curr, &table->priority_list, list) { - if (is_match (path, curr->pattern)) - priority = curr->priority; - } - } + + if (list_empty(&table->priority_list)) + return priority; + + priority = 0; + list_for_each_entry (curr, &table->priority_list, list) { + if (is_match (path, curr->pattern)) + priority = curr->priority; + } return priority; } -/* +/* * ioc_open_cbk - open callback for io cache * * @frame: call frame @@ -523,13 +522,13 @@ ioc_get_priority (ioc_table_t *table, const char *path) */ int32_t ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, - int32_t op_errno, fd_t *fd) + int32_t op_errno, fd_t *fd) { - uint64_t tmp_ioc_inode = 0; - ioc_local_t *local = NULL; - ioc_table_t *table = NULL; - ioc_inode_t *ioc_inode = NULL; - uint32_t weight = 0xffffffff; + uint64_t tmp_ioc_inode = 0; + ioc_local_t *local = NULL; + ioc_table_t *table = NULL; + ioc_inode_t *ioc_inode = NULL; + uint32_t weight = 0xffffffff; local = frame->local; if (!this || !this->private) { @@ -540,10 +539,10 @@ ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, table = this->private; - if (op_ret != -1) { + if (op_ret != -1) { inode_ctx_get (fd->inode, this, &tmp_ioc_inode); ioc_inode = (ioc_inode_t *)(long)tmp_ioc_inode; - + ioc_table_lock (ioc_inode->table); { list_move_tail (&ioc_inode->inode_lru, @@ -561,32 +560,31 @@ ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, } ioc_inode_unlock (ioc_inode); - /* If O_DIRECT open, we disable caching on it */ - if ((local->flags & O_DIRECT)){ - /* O_DIRECT is only for one fd, not the inode - * as a whole - */ - fd_ctx_set (fd, this, 1); - } - + /* If O_DIRECT open, we disable caching on it */ + if ((local->flags & O_DIRECT)){ + /* O_DIRECT is only for one fd, not the inode + * as a whole + */ + fd_ctx_set (fd, this, 1); + } if ((local->wbflags & GF_OPEN_NOWB) != 0) { /* disable caching as asked by NFS */ fd_ctx_set (fd, this, 1); } - /* weight = 0, we disable caching on it */ - if (weight == 0) { - /* we allow a pattern-matched cache disable this way - */ - fd_ctx_set (fd, this, 1); - } - } + /* weight = 0, we disable caching on it */ + if (weight == 0) { + /* we allow a pattern-matched cache disable this way + */ + fd_ctx_set (fd, this, 1); + } + } out: - GF_FREE (local); - frame->local = NULL; + GF_FREE (local); + frame->local = NULL; - STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); + STACK_UNWIND_STRICT (open, frame, op_ret, op_errno, fd); return 0; } @@ -610,11 +608,12 @@ ioc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, inode_t *inode, struct iatt *buf, struct iatt *preparent, struct iatt *postparent) { - ioc_local_t *local = NULL; - ioc_table_t *table = NULL; - ioc_inode_t *ioc_inode = NULL; - uint32_t weight = 0xffffffff; - const char *path = NULL; + ioc_local_t *local = NULL; + ioc_table_t *table = NULL; + ioc_inode_t *ioc_inode = NULL; + uint32_t weight = 0xffffffff; + const char *path = NULL; + int ret = -1; local = frame->local; if (!this || !this->private) { @@ -641,7 +640,7 @@ ioc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if ((table->min_file_size > ioc_inode->ia_size) || ((table->max_file_size >= 0) && (table->max_file_size < ioc_inode->ia_size))) { - fd_ctx_set (fd, this, 1); + ret = fd_ctx_set (fd, this, 1); } } ioc_inode_unlock (ioc_inode); @@ -650,20 +649,17 @@ ioc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, (uint64_t)(long)ioc_inode); /* If O_DIRECT open, we disable caching on it */ - if (local->flags & O_DIRECT){ + if (local->flags & O_DIRECT) /* - * O_DIRECT is only for one fd, not the inode - * as a whole - */ - fd_ctx_set (fd, this, 1); - } - - /* weight = 0, we disable caching on it */ - if (weight == 0) { - /* we allow a pattern-matched cache disable this way - */ - fd_ctx_set (fd, this, 1); - } + * O_DIRECT is only for one fd, not the inode + * as a whole */ + ret = fd_ctx_set (fd, this, 1); + + /* if weight == 0, we disable caching on it */ + if (!weight) + /* we allow a pattern-matched cache disable this way */ + ret = fd_ctx_set (fd, this, 1); + } out: @@ -683,7 +679,7 @@ ioc_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, struct iatt *buf, struct iatt *preparent, struct iatt *postparent) { - ioc_local_t *local = NULL; + ioc_local_t *local = NULL; ioc_table_t *table = NULL; ioc_inode_t *ioc_inode = NULL; uint32_t weight = 0xffffffff; @@ -784,7 +780,7 @@ int32_t ioc_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, fd_t *fd, int32_t wbflags) { - + ioc_local_t *local = NULL; local = GF_CALLOC (1, sizeof (ioc_local_t), gf_ioc_mt_ioc_local_t); @@ -798,9 +794,9 @@ ioc_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, local->file_loc.path = loc->path; local->file_loc.inode = loc->inode; local->wbflags = wbflags; - + frame->local = local; - + STACK_WIND (frame, ioc_open_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->open, loc, flags, fd, wbflags); @@ -809,7 +805,7 @@ ioc_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, /* * ioc_create - create fop for io cache - * + * * @frame: * @this: * @pathname: @@ -822,7 +818,7 @@ ioc_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, mode_t mode, fd_t *fd, dict_t *params) { ioc_local_t *local = NULL; - + local = GF_CALLOC (1, sizeof (ioc_local_t), gf_ioc_mt_ioc_local_t); if (local == NULL) { gf_log (this->name, GF_LOG_ERROR, "out of memory"); @@ -847,7 +843,7 @@ ioc_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, /* * ioc_release - release fop for io cache - * + * * @frame: * @this: * @fd: @@ -859,8 +855,8 @@ ioc_release (xlator_t *this, fd_t *fd) return 0; } -/* - * ioc_readv_disabled_cbk +/* + * ioc_readv_disabled_cbk * @frame: * @cookie: * @this: @@ -869,7 +865,7 @@ ioc_release (xlator_t *this, fd_t *fd) * @vector: * @count: * - */ + */ int32_t ioc_readv_disabled_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iovec *vector, @@ -886,7 +882,7 @@ int32_t ioc_need_prune (ioc_table_t *table) { int64_t cache_difference = 0; - + ioc_table_lock (table); { cache_difference = table->cache_used - table->cache_size; @@ -895,17 +891,17 @@ ioc_need_prune (ioc_table_t *table) if (cache_difference > 0) return 1; - else + else return 0; } /* * ioc_dispatch_requests - - * + * * @frame: * @inode: * - * + * */ void ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, @@ -924,7 +920,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, int32_t ret = -1; int8_t need_validate = 0; int8_t might_need_validate = 0; /* - * if a page exists, do we need + * if a page exists, do we need * to validate it? */ local = frame->local; @@ -954,7 +950,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, trav = ioc_page_get (ioc_inode, trav_offset); local_offset = max (trav_offset, offset); - trav_size = min (((offset+size) - local_offset), + trav_size = min (((offset+size) - local_offset), table->page_size); if (!trav) { @@ -968,7 +964,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, local->op_errno = ENOMEM; goto out; } - } + } ioc_wait_on_page (trav, frame, local_offset, trav_size); @@ -1006,7 +1002,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, //} ioc_inode_unlock (ioc_inode); - + ioc_waitq_return (waitq); waitq = NULL; @@ -1035,7 +1031,7 @@ ioc_dispatch_requests (call_frame_t *frame, ioc_inode_t *ioc_inode, fd_t *fd, goto out; } } - + trav_offset += table->page_size; } @@ -1052,7 +1048,7 @@ out: /* * ioc_readv - - * + * * @frame: * @this: * @fd: @@ -1081,7 +1077,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, if (!ioc_inode) { /* caching disabled, go ahead with normal readv */ STACK_WIND (frame, ioc_readv_disabled_cbk, - FIRST_CHILD (frame->this), + FIRST_CHILD (frame->this), FIRST_CHILD (frame->this)->fops->readv, fd, size, offset); return 0; @@ -1102,7 +1098,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, if (!table->mem_pool) { num_pages = (table->cache_size / table->page_size) - + ((table->cache_size % table->page_size) + + ((table->cache_size % table->page_size) ? 1 : 0); table->mem_pool @@ -1123,7 +1119,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, { if (!ioc_inode->cache.page_table) { ioc_inode->cache.page_table - = rbthash_table_init + = rbthash_table_init (IOC_PAGE_TABLE_BUCKET_COUNT, ioc_hashfn, NULL, 0, table->mem_pool); @@ -1140,7 +1136,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, if (!fd_ctx_get (fd, this, NULL)) { /* disable caching for this fd, go ahead with normal readv */ STACK_WIND (frame, ioc_readv_disabled_cbk, - FIRST_CHILD (frame->this), + FIRST_CHILD (frame->this), FIRST_CHILD (frame->this)->fops->readv, fd, size, offset); return 0; @@ -1156,7 +1152,7 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, INIT_LIST_HEAD (&local->fill_list); - frame->local = local; + frame->local = local; local->pending_offset = offset; local->pending_size = size; local->offset = offset; @@ -1164,14 +1160,14 @@ ioc_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, local->inode = ioc_inode; gf_log (this->name, GF_LOG_TRACE, - "NEW REQ (%p) offset = %"PRId64" && size = %"GF_PRI_SIZET"", + "NEW REQ (%p) offset = %"PRId64" && size = %"GF_PRI_SIZET"", frame, offset, size); weight = ioc_inode->weight; ioc_table_lock (ioc_inode->table); { - list_move_tail (&ioc_inode->inode_lru, + list_move_tail (&ioc_inode->inode_lru, &ioc_inode->table->inode_lru[weight]); } ioc_table_unlock (ioc_inode->table); @@ -1186,7 +1182,7 @@ out: /* * ioc_writev_cbk - - * + * * @frame: * @cookie: * @this: @@ -1204,7 +1200,7 @@ ioc_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local = frame->local; inode_ctx_get (local->fd->inode, this, &ioc_inode); - + if (ioc_inode) ioc_inode_flush ((ioc_inode_t *)(long)ioc_inode); @@ -1214,7 +1210,7 @@ ioc_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* * ioc_writev - * + * * @frame: * @this: * @fd: @@ -1256,7 +1252,7 @@ ioc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, /* * ioc_truncate_cbk - - * + * * @frame: * @cookie: * @this: @@ -1265,7 +1261,7 @@ ioc_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, * @buf: * */ -int32_t +int32_t ioc_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf) @@ -1302,14 +1298,14 @@ ioc_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, /* * ioc_truncate - - * + * * @frame: * @this: * @loc: * @offset: * */ -int32_t +int32_t ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) { uint64_t ioc_inode = 0; @@ -1325,7 +1321,7 @@ ioc_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) /* * ioc_ftruncate - - * + * * @frame: * @this: * @fd: @@ -1354,7 +1350,7 @@ ioc_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, return 0; } -int32_t +int32_t ioc_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, struct gf_flock *lock) { @@ -1401,16 +1397,16 @@ ioc_get_priority_list (const char *opt_str, struct list_head *first) max_pri = -1; goto out; } - - /* Get the pattern for cache priority. - * "option priority *.jpg:1,abc*:2" etc + + /* Get the pattern for cache priority. + * "option priority *.jpg:1,abc*:2" etc */ - /* TODO: inode_lru in table is statically hard-coded to 5, - * should be changed to run-time configuration + /* TODO: inode_lru in table is statically hard-coded to 5, + * should be changed to run-time configuration */ stripe_str = strtok_r (string, ",", &tmp_str); while (stripe_str) { - curr = GF_CALLOC (1, sizeof (struct ioc_priority), + curr = GF_CALLOC (1, sizeof (struct ioc_priority), gf_ioc_mt_ioc_priority); if (curr == NULL) { max_pri = -1; @@ -1490,7 +1486,7 @@ mem_acct_init (xlator_t *this) return ret; ret = xlator_mem_acct_init (this, gf_ioc_mt_end + 1); - + if (ret != 0) { gf_log (this->name, GF_LOG_ERROR, "Memory accounting init" "failed"); @@ -1523,7 +1519,7 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) ret = -1; goto out; } - + if (cache_timeout > 60){ gf_log (this->name, GF_LOG_WARNING, @@ -1534,7 +1530,7 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) goto out; } - + gf_log (this->name, GF_LOG_DEBUG, "Validated cache-timeout revalidate cache"); @@ -1542,12 +1538,12 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) if (dict_get (options, "cache-size")) - cache_size_string = data_to_str (dict_get (options, + cache_size_string = data_to_str (dict_get (options, "cache-size")); if (cache_size_string) { - if (gf_string2bytesize (cache_size_string, + if (gf_string2bytesize (cache_size_string, &cache_size) != 0) { - gf_log ("io-cache", GF_LOG_ERROR, + gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " "\"option cache-size\" Defaulting" "to old value", cache_size_string); @@ -1579,28 +1575,28 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) ret = -1; goto out; } - + gf_log (this->name, GF_LOG_DEBUG, "Validated " " cache-size %"PRIu64"", cache_size); } - + tmp = data_to_str (dict_get (options, "min-file-size")); if (tmp != NULL) { if (gf_string2bytesize (tmp, (uint64_t *)&min_file_size) != 0) { - gf_log ("io-cache", GF_LOG_WARNING, + gf_log ("io-cache", GF_LOG_WARNING, "invalid number format \"%s\" of " "\"option min-file-size\"", tmp); *op_errstr = gf_strdup ("Error, Invalid Format"); ret = -1; goto out; } - - gf_log (this->name, GF_LOG_DEBUG, - "Validated min-file-size %"PRIu64"", + + gf_log (this->name, GF_LOG_DEBUG, + "Validated min-file-size %"PRIu64"", min_file_size); } @@ -1614,16 +1610,16 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) "invalid number format \"%s\" of " "\"option max-file-size\"", tmp); *op_errstr = gf_strdup ("Error, Invalid Format"); - ret = -1; + ret = -1; goto out; } - + gf_log (this->name, GF_LOG_WARNING, "Validated max-file-size %"PRIu64"", max_file_size); } - + if ((max_file_size >= 0) & (min_file_size > max_file_size)) { gf_log ("io-cache", GF_LOG_WARNING, "minimum size (%" PRIu64") of a file that can be cached is " @@ -1636,7 +1632,7 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) } -out: +out: return ret; } @@ -1658,10 +1654,10 @@ reconfigure (xlator_t *this, dict_t *options) table = this->private; - ioc_table_lock (table); + ioc_table_lock (table); { if (dict_get (options, "cache-timeout")) { - cache_timeout = + cache_timeout = data_to_uint32 (dict_get (options, "cache-timeout")); if (cache_timeout < 0){ @@ -1671,7 +1667,7 @@ reconfigure (xlator_t *this, dict_t *options) ret = -1; goto out; } - + if (cache_timeout > 60){ gf_log (this->name, GF_LOG_WARNING, @@ -1687,18 +1683,18 @@ reconfigure (xlator_t *this, dict_t *options) "Reconfiguring %d seconds to" " revalidate cache", table->cache_timeout); } - else + else table->cache_timeout = 1; - + if (dict_get (options, "cache-size")) - cache_size_string = data_to_str (dict_get (options, + cache_size_string = data_to_str (dict_get (options, "cache-size")); if (cache_size_string) { - if (gf_string2bytesize (cache_size_string, + if (gf_string2bytesize (cache_size_string, &cache_size) != 0) { - gf_log ("io-cache", GF_LOG_ERROR, + gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " "\"option cache-size\" Defaulting" "to old value", cache_size_string); @@ -1727,7 +1723,7 @@ reconfigure (xlator_t *this, dict_t *options) ret = -1; goto out; } - + gf_log (this->name, GF_LOG_DEBUG, "Reconfiguring " " cache-size %"PRIu64"", cache_size); @@ -1736,40 +1732,40 @@ reconfigure (xlator_t *this, dict_t *options) else table->cache_size = IOC_CACHE_SIZE; - + if (dict_get (options, "priority")) { - char *option_list = data_to_str (dict_get (options, + char *option_list = data_to_str (dict_get (options, "priority")); gf_log (this->name, GF_LOG_TRACE, "option path %s", option_list); /* parse the list of pattern:priority */ - table->max_pri = ioc_get_priority_list (option_list, + table->max_pri = ioc_get_priority_list (option_list, &table->priority_list); - + if (table->max_pri == -1) { ret = -1; goto out; } table->max_pri ++; } - - - + + + min_file_size = table->min_file_size; tmp = data_to_str (dict_get (options, "min-file-size")); if (tmp != NULL) { if (gf_string2bytesize (tmp, (uint64_t *)&min_file_size) != 0) { - gf_log ("io-cache", GF_LOG_ERROR, + gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " "\"option min-file-size\"", tmp); ret = -1; goto out; } - - gf_log (this->name, GF_LOG_DEBUG, - "Reconfiguring min-file-size %"PRIu64"", + + gf_log (this->name, GF_LOG_DEBUG, + "Reconfiguring min-file-size %"PRIu64"", table->min_file_size); } @@ -1782,16 +1778,16 @@ reconfigure (xlator_t *this, dict_t *options) gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " "\"option max-file-size\"", tmp); - ret = -1; + ret = -1; goto out; } - + gf_log (this->name, GF_LOG_DEBUG, "Reconfiguring max-file-size %"PRIu64"", table->max_file_size); } - + if ((max_file_size >= 0) & (min_file_size > max_file_size)) { gf_log ("io-cache", GF_LOG_ERROR, "minimum size (%" PRIu64") of a file that can be cached is " @@ -1809,19 +1805,19 @@ reconfigure (xlator_t *this, dict_t *options) if (data_to_str (dict_get (options, "max-file-size"))) table->max_file_size = 0; } - + ioc_table_unlock (table); -out: +out: return ret; - + } /* - * init - + * init - * @this: * */ -int32_t +int32_t init (xlator_t *this) { ioc_table_t *table = NULL; @@ -1848,32 +1844,32 @@ init (xlator_t *this) gf_log (this->name, GF_LOG_ERROR, "out of memory"); goto out; } - + table->xl = this; table->page_size = this->ctx->page_size; table->cache_size = IOC_CACHE_SIZE; if (dict_get (options, "cache-size")) - cache_size_string = data_to_str (dict_get (options, + cache_size_string = data_to_str (dict_get (options, "cache-size")); if (cache_size_string) { - if (gf_string2bytesize (cache_size_string, + if (gf_string2bytesize (cache_size_string, &table->cache_size) != 0) { - gf_log ("io-cache", GF_LOG_ERROR, + gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " - "\"option cache-size\"", + "\"option cache-size\"", cache_size_string); goto out; } - - gf_log (this->name, GF_LOG_TRACE, + + gf_log (this->name, GF_LOG_TRACE, "using cache-size %"PRIu64"", table->cache_size); } - + table->cache_timeout = 1; if (dict_get (options, "cache-timeout")) { - table->cache_timeout = + table->cache_timeout = data_to_uint32 (dict_get (options, "cache-timeout")); gf_log (this->name, GF_LOG_TRACE, @@ -1884,14 +1880,14 @@ init (xlator_t *this) INIT_LIST_HEAD (&table->priority_list); table->max_pri = 1; if (dict_get (options, "priority")) { - char *option_list = data_to_str (dict_get (options, + char *option_list = data_to_str (dict_get (options, "priority")); gf_log (this->name, GF_LOG_TRACE, "option path %s", option_list); /* parse the list of pattern:priority */ - table->max_pri = ioc_get_priority_list (option_list, + table->max_pri = ioc_get_priority_list (option_list, &table->priority_list); - + if (table->max_pri == -1) { goto out; } @@ -1904,16 +1900,16 @@ init (xlator_t *this) if (tmp != NULL) { if (gf_string2bytesize (tmp, (uint64_t *)&table->min_file_size) != 0) { - gf_log ("io-cache", GF_LOG_ERROR, + gf_log ("io-cache", GF_LOG_ERROR, "invalid number format \"%s\" of " "\"option min-file-size\"", tmp); goto out; } - gf_log (this->name, GF_LOG_TRACE, + gf_log (this->name, GF_LOG_TRACE, "using min-file-size %"PRIu64"", table->min_file_size); } - + table->max_file_size = -1; tmp = data_to_str (dict_get (options, "max-file-size")); if (tmp != NULL) { @@ -1929,7 +1925,7 @@ init (xlator_t *this) "using max-file-size %"PRIu64"", table->max_file_size); } INIT_LIST_HEAD (&table->inodes); - + if ((table->max_file_size >= 0) && (table->min_file_size > table->max_file_size)) { gf_log ("io-cache", GF_LOG_ERROR, "minimum size (%" @@ -1939,7 +1935,7 @@ init (xlator_t *this) goto out; } - table->inode_lru = GF_CALLOC (table->max_pri, + table->inode_lru = GF_CALLOC (table->max_pri, sizeof (struct list_head), gf_ioc_mt_list_head); if (table->inode_lru == NULL) { @@ -1976,7 +1972,7 @@ ioc_priv_dump (xlator_t *this) if (!this || !this->private) goto out; - + priv = this->private; gf_proc_dump_build_key (key_prefix, "xlator.performance.io-cache", "priv"); @@ -1997,7 +1993,7 @@ out: /* * fini - - * + * * @this: * */ @@ -2047,18 +2043,18 @@ struct xlator_cbks cbks = { }; struct volume_options options[] = { - { .key = {"priority"}, - .type = GF_OPTION_TYPE_ANY + { .key = {"priority"}, + .type = GF_OPTION_TYPE_ANY }, { .key = {"cache-timeout", "force-revalidate-timeout"}, .type = GF_OPTION_TYPE_INT, - .min = 0, - .max = 60 - }, - { .key = {"cache-size"}, + .min = 0, + .max = 60 + }, + { .key = {"cache-size"}, .type = GF_OPTION_TYPE_SIZET, - .min = 4 * GF_UNIT_MB, - .max = 6 * GF_UNIT_GB + .min = 4 * GF_UNIT_MB, + .max = 6 * GF_UNIT_GB }, { .key = {"min-file-size"}, .type = GF_OPTION_TYPE_SIZET, |