]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore/.../block.cc: add error message on alloc error to segment_write
authorSamuel Just <sjust@redhat.com>
Thu, 25 Mar 2021 18:56:40 +0000 (11:56 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 25 Mar 2021 20:13:59 +0000 (13:13 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/segment_manager/block.cc

index 9529ac6eb8757cee903202626847e43cdbaf0ac3..36e890894cebd61ec358b8e14a974bfdf676aca8 100644 (file)
@@ -239,15 +239,27 @@ Segment::write_ertr::future<> BlockSegmentManager::segment_write(
     get_offset(addr),
     bl.length());
 
+  bufferptr bptr;
+  try {
+    bptr = bufferptr(ceph::buffer::create_page_aligned(bl.length()));
+    auto iter = bl.cbegin();
+    iter.copy(bl.length(), bptr.c_str());
+  } catch (const std::exception &e) {
+    logger().error(
+      "BlockSegmentManager::segment_write: "
+      "exception creating aligned buffer {}",
+      e
+    );
+    throw e;
+  }
+
   
   // TODO send an iovec and avoid the copy -- bl should have aligned
   // constituent buffers and they will remain unmodified until the write
   // completes
   return seastar::do_with(
-    bufferptr(ceph::buffer::create_page_aligned(bl.length())),
+    std::move(bptr),
     [&](auto &bp) {
-      auto iter = bl.cbegin();
-      iter.copy(bl.length(), bp.c_str());
       return do_write(device, get_offset(addr), bp);
     });
 }