diff options
author | Joseph Fernandes <josferna@redhat.com> | 2016-01-26 17:47:08 +0530 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2016-02-14 06:23:17 -0800 |
commit | d09d3406ce3eea551bd196402fdd46e3b8734bf1 (patch) | |
tree | 0d0de619720e018b3d0ab36b274605a9d0bdda22 /xlators/cluster/dht/src/tier.h | |
parent | 0488cd5683f81eb49636cab59a6a43951e057013 (diff) |
tier/gfdb : Round-Robin read of query files
1. Each brick on a host will get a separate query file.
2. While reading query record from these query files we
read them in a Round-Robin manner.
3. When an error occurs during migration we rename it to
query file with an time stamp and .err extension for
better debugging.
Backport of http://review.gluster.org/13293
> Change-Id: I27c4285d24fd695d2d5cbd9fd7db3879d277ecc8
> BUG: 1302772
> Signed-off-by: Joseph Fernandes <josferna@redhat.com>
> Reviewed-on: http://review.gluster.org/13293
> Smoke: Gluster Build System <jenkins@build.gluster.com>
> Tested-by: N Balachandran <nbalacha@redhat.com>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> Reviewed-by: Dan Lambright <dlambrig@redhat.com>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Change-Id: I9448f19c10a82fff9b1b3c9387c9026adc0742f1
BUG: 1306514
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Reviewed-on: http://review.gluster.org/13427
Smoke: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Joseph Fernandes
Tested-by: Joseph Fernandes
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'xlators/cluster/dht/src/tier.h')
-rw-r--r-- | xlators/cluster/dht/src/tier.h | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/xlators/cluster/dht/src/tier.h b/xlators/cluster/dht/src/tier.h index fe66a6950db..a0cb4658cd3 100644 --- a/xlators/cluster/dht/src/tier.h +++ b/xlators/cluster/dht/src/tier.h @@ -44,25 +44,39 @@ #define GET_QFILE_PATH(is_promotion)\ (is_promotion) ? promotion_qfile : demotion_qfile +typedef struct tier_qfile_array { + int *fd_array; + ssize_t array_size; + ssize_t next_index; + /* Indicate the number of exhuasted FDs*/ + ssize_t exhausted_count; +} tier_qfile_array_t; + + typedef struct _query_cbk_args { - xlator_t *this; - gf_defrag_info_t *defrag; - int query_fd; - int is_promotion; + xlator_t *this; + gf_defrag_info_t *defrag; + /* This is write */ + int query_fd; + int is_promotion; + /* This is for read */ + tier_qfile_array_t *qfile_array; } query_cbk_args_t; int gf_run_tier(xlator_t *this, gf_defrag_info_t *defrag); typedef struct gfdb_brick_info { - gfdb_time_t *time_stamp; + gfdb_time_t *time_stamp; gf_boolean_t _gfdb_promote; - query_cbk_args_t *_query_cbk_args; + query_cbk_args_t *_query_cbk_args; } gfdb_brick_info_t; typedef struct brick_list { xlator_t *xlator; char *brick_db_path; + char brick_name[NAME_MAX]; + char qfile_path[PATH_MAX]; struct list_head list; } tier_brick_list_t; |