From: Sage Weil Date: Tue, 18 Aug 2015 20:05:29 +0000 (-0400) Subject: rbd: fix bench-write X-Git-Tag: v0.94.6~20^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b2961cef3d8e84d2302815e33eb7dc9033d2bb78;p=ceph.git rbd: fix bench-write Make each IO get a unique offset! Signed-off-by: Sage Weil (cherry picked from commit 333f3a01a9916c781f266078391c580efb81a0fc) --- diff --git a/src/rbd.cc b/src/rbd.cc index 6f5457d1461f..e3e0e1ecb71a 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -978,15 +978,7 @@ static int do_bench_write(librbd::Image& image, uint64_t io_size, for (off = 0; off < io_bytes; ) { b.wait_for(io_threads - 1); i = 0; - while (i < io_threads && off < io_bytes && - b.start_write(io_threads, thread_offset[i], io_size, bl, op_flags)) { - ++i; - ++ios; - off += io_size; - - ++cur_ios; - cur_off += io_size; - + while (i < io_threads && off < io_bytes) { if (pattern == "rand") { thread_offset[i] = (rand() % (size / io_size)) * io_size; } else { @@ -994,6 +986,16 @@ static int do_bench_write(librbd::Image& image, uint64_t io_size, if (thread_offset[i] + io_size > size) thread_offset[i] = 0; } + + if (!b.start_write(io_threads, thread_offset[i], io_size, bl, op_flags)) + break; + + ++i; + ++ios; + off += io_size; + + ++cur_ios; + cur_off += io_size; } utime_t now = ceph_clock_now(NULL);