]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/filestore: use new sleep strategy when io_submit gets EAGAIN.
authorPan Liu <wanjun.lp@alibaba-inc.com>
Fri, 28 Apr 2017 03:36:46 +0000 (11:36 +0800)
committerPan Liu <wanjun.lp@alibaba-inc.com>
Fri, 28 Apr 2017 03:36:46 +0000 (11:36 +0800)
Signed-off-by: Pan Liu <wanjun.lp@alibaba-inc.com>
src/os/filestore/FileJournal.cc

index 9956a1f213b4a2b9578e219184d671764227e149..1e14ca81b47682c740487e2b0a5f3f1338dfa5a4 100644 (file)
@@ -1410,7 +1410,10 @@ int FileJournal::write_aio_bl(off64_t& pos, bufferlist& bl, uint64_t seq)
     aio_lock.Unlock();
 
     iocb *piocb = &aio.iocb;
-    int attempts = 10;
+    
+    // 2^16 * 125us = ~8 seconds, so max sleep is ~16 seconds
+    int attempts = 16;
+    int delay = 125;
     do {
       int r = io_submit(aio_ctx, 1, &piocb);
       dout(20) << "write_aio_bl io_submit return value: " << r << dendl;
@@ -1418,7 +1421,8 @@ int FileJournal::write_aio_bl(off64_t& pos, bufferlist& bl, uint64_t seq)
        derr << "io_submit to " << aio.off << "~" << cur_len
             << " got " << cpp_strerror(r) << dendl;
        if (r == -EAGAIN && attempts-- > 0) {
-         usleep(500);
+         usleep(delay);
+         delay *= 2;
          continue;
        }
        check_align(pos, tbl);