From b224dd14b75fb993eec4f44ecf11edce8a6fc42f Mon Sep 17 00:00:00 2001 From: Xavier Hernandez Date: Mon, 14 Jul 2014 17:34:04 +0200 Subject: ec: Optimize read/write performance This patch significantly improves performance of read/write operations on a dispersed volume by reusing previous inodelk/ entrylk operations on the same inode/entry. This reduces the latency of each individual operation considerably. Inode version and size are also updated when needed instead of on each request. This gives an additional boost. This is a backport of http://review.gluster.org/8369/ Change-Id: I4b98d5508c86b53032e16e295f72a3f83fd8fcac BUG: 1140844 Signed-off-by: Xavier Hernandez Reviewed-on: http://review.gluster.org/8746 Tested-by: Gluster Build System Reviewed-by: Jeff Darcy Reviewed-by: Dan Lambright --- xlators/cluster/ec/src/ec-combine.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'xlators/cluster/ec/src/ec-combine.c') diff --git a/xlators/cluster/ec/src/ec-combine.c b/xlators/cluster/ec/src/ec-combine.c index 3d088d9be4a..02b7e6024fd 100644 --- a/xlators/cluster/ec/src/ec-combine.c +++ b/xlators/cluster/ec/src/ec-combine.c @@ -735,7 +735,7 @@ void ec_combine(ec_cbk_data_t * cbk, ec_combine_f combine) ec_fop_data_t * fop = cbk->fop; ec_cbk_data_t * ans = NULL, * tmp = NULL; struct list_head * item = NULL; - int32_t needed = 0, report = 0; + int32_t needed = 0, resume = 0; char str[32]; LOCK(&fop->lock); @@ -776,7 +776,7 @@ void ec_combine(ec_cbk_data_t * cbk, ec_combine_f combine) ec_update_bad(fop, cbk->mask); - report = 1; + resume = 1; } ans = list_entry(fop->cbk_list.next, ec_cbk_data_t, list); @@ -788,8 +788,8 @@ void ec_combine(ec_cbk_data_t * cbk, ec_combine_f combine) { ec_dispatch_next(fop, cbk->idx); } - else if (report) + else if (resume) { - ec_report(fop, 0); + ec_resume(fop, 0); } } -- cgit