]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlockDevice: fix alignment check
authorSage Weil <sage@redhat.com>
Thu, 10 Dec 2015 21:44:29 +0000 (16:44 -0500)
committerSage Weil <sage@redhat.com>
Fri, 1 Jan 2016 18:06:56 +0000 (13:06 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlockDevice.cc

index b3a9f35a67fb8da66e2b09e10d23197f60fd51fd..e46cf70d84debea8f4663cbb677d5f66d12227a6 100644 (file)
@@ -293,7 +293,7 @@ int BlockDevice::aio_write(
   assert(off < size);
   assert(off + len <= size);
 
-  if (!bl.is_n_page_sized()) {
+  if (!bl.is_n_page_sized() || !bl.is_page_aligned()) {
     dout(20) << __func__ << " rebuilding buffer to be page-aligned" << dendl;
     bl.rebuild();
   }
@@ -313,6 +313,10 @@ int BlockDevice::aio_write(
     ++ioc->num_pending;
     FS::aio_t& aio = ioc->pending_aios.back();
     bl.prepare_iov(&aio.iov);
+    for (unsigned i=0; i<aio.iov.size(); ++i) {
+      dout(30) << "aio " << i << " " << aio.iov[i].iov_base
+              << " " << aio.iov[i].iov_len << dendl;
+    }
     ioc->pending_bl.append(bl);
     aio.pwritev(off);
     dout(2) << __func__ << " prepared aio " << &aio << dendl;