diff options
| author | Milind Changire <mchangir@redhat.com> | 2016-10-15 10:49:19 +0530 |
|---|---|---|
| committer | Dan Lambright <dlambrig@redhat.com> | 2016-10-19 12:51:48 -0700 |
| commit | 460016428cf27484c333227f534c2e2f73a37fb1 (patch) | |
| tree | 321a1bb0517f622a134b3ab0634d6fea842fdb06 /libglusterfs/src/gfdb/gfdb_data_store.c | |
| parent | 20d2b36f3acc2f27527b7913d2ad939848395aeb (diff) | |
cluster/tier: handle fast demotions
Demote files on priority if hi-watermark has been breached and continue
to demote until the watermark drops below hi-watermark.
Monitor watermark more frequently.
Trigger demotion as soon as hi-watermark is breached.
Add cluster.tier-emergency-demote-query-limit option to limit number
of files returned from the database query for every iteration of
tier_migrate_using_query_file(). If watermark hasn't dropped below
hi-watermark during the first iteration, the next iteration will be
triggered approximately 1 second after tier_demote() returns to the
main tiering loop.
Update changetimerecorder xlator to handle query for emergency demote
mode.
Add tier-ctr-interface.h:
Move tier and ctr interface specific macros and struct definition from
libglusterfs/src/gfdb/gfdb_data_store.h to new header
libglusterfs/src/tier-ctr-interface.h
Change-Id: If56af78c6c81d37529b9b6e65ae606ba5c99a811
BUG: 1366648
Signed-off-by: Milind Changire <mchangir@redhat.com>
Reviewed-on: http://review.gluster.org/15158
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_data_store.c')
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_data_store.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_data_store.c b/libglusterfs/src/gfdb/gfdb_data_store.c index cb567503fa3..7074c4a51c2 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store.c +++ b/libglusterfs/src/gfdb/gfdb_data_store.c @@ -481,12 +481,14 @@ compact_db (gfdb_conn_node_t *_conn_node, gf_boolean_t _compact_active, * for every record found * _query_cbk_args : Custom argument passed for the call back * function query_callback + * query_limit : number to limit number of rows returned by the query * Returns : if successful return 0 or * -ve value in case of failure*/ int find_all (gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback, - void *_query_cbk_args) + void *_query_cbk_args, + int query_limit) { int ret = 0; gfdb_db_operations_t *db_operations_t = NULL; @@ -500,7 +502,8 @@ find_all (gfdb_conn_node_t *_conn_node, if (db_operations_t->find_all_op) { ret = db_operations_t->find_all_op (gf_db_connection, query_callback, - _query_cbk_args); + _query_cbk_args, + query_limit); if (ret) { gf_msg (GFDB_DATA_STORE, GF_LOG_ERROR, 0, LG_MSG_FIND_OP_FAILED, "Find all operation " @@ -851,6 +854,7 @@ void get_gfdb_methods (gfdb_methods_t *methods) { methods->init_db = init_db; methods->fini_db = fini_db; + methods->find_all = find_all; methods->find_unchanged_for_time = find_unchanged_for_time; methods->find_recently_changed_files = find_recently_changed_files; methods->find_unchanged_for_time_freq = find_unchanged_for_time_freq; |
