]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore/KernelDevice: rebuild buffer if we exceed IOV_MAX
authorSage Weil <sage@redhat.com>
Thu, 23 Jun 2016 14:00:17 +0000 (10:00 -0400)
committerSage Weil <sage@redhat.com>
Thu, 30 Jun 2016 16:56:56 +0000 (12:56 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/KernelDevice.cc

index 2302633ad755652fc00f1de40b7c73988d5b84ed..8c1d061ee7d8586c8124ada13e9dc0faa2547bde 100644 (file)
@@ -385,10 +385,10 @@ int KernelDevice::aio_write(
   assert(off < size);
   assert(off + len <= size);
 
-  if (!buffered && bl.rebuild_aligned_size_and_memory(block_size, block_size)) {
+  if ((!buffered || bl.get_num_buffers() >= IOV_MAX) &&
+      bl.rebuild_aligned_size_and_memory(block_size, block_size)) {
     dout(20) << __func__ << " rebuilding buffer to be aligned" << dendl;
   }
-
   dout(40) << "data: ";
   bl.hexdump(*_dout);
   *_dout << dendl;