From 32a6898678686df1b2c82a37e548170ba5c3512b Mon Sep 17 00:00:00 2001 From: Raghavendra G Date: Tue, 22 Sep 2009 01:38:25 +0000 Subject: performance/write-behind: remove redundant traversal of write-requests in the wind list in wb_ sync. - no need of getting the total_count of number of requests in the list. Even if there is a single request, we need to sync it. Signed-off-by: Anand V. Avati BUG: 276 (write behind needs to be optimized.) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=276 --- xlators/performance/write-behind/src/write-behind.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'xlators') diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index b38f1665b..34a48809e 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -370,7 +370,7 @@ wb_sync (call_frame_t *frame, wb_file_t *file, list_head_t *winds) struct iobref *iobref = NULL; wb_local_t *local = NULL; struct iovec *vector = NULL; - ssize_t bytes = 0, current_size = 0; + ssize_t current_size = 0, bytes = 0; size_t bytecount = 0; wb_conf_t *conf = NULL; fd_t *fd = NULL; @@ -378,8 +378,9 @@ wb_sync (call_frame_t *frame, wb_file_t *file, list_head_t *winds) conf = file->this->private; list_for_each_entry (request, winds, winds) { total_count += request->stub->args.writev.count; - bytes += iov_length (request->stub->args.writev.vector, - request->stub->args.writev.count); + if (total_count > 0) { + break; + } } if (total_count == 0) { @@ -460,6 +461,7 @@ wb_sync (call_frame_t *frame, wb_file_t *file, list_head_t *winds) fd_ref (fd); + bytes += current_size; STACK_WIND (sync_frame, wb_sync_cbk, FIRST_CHILD(sync_frame->this), -- cgit