]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-replay: Check that return values are non-negative
authorAdam Crume <adamcrume@gmail.com>
Fri, 18 Jul 2014 21:37:57 +0000 (14:37 -0700)
committerAdam Crume <adamcrume@gmail.com>
Wed, 13 Aug 2014 20:58:16 +0000 (13:58 -0700)
Signed-off-by: Adam Crume <adamcrume@gmail.com>
src/rbd_replay/PendingIO.cc
src/rbd_replay/actions.cc

index b4cc99d958bd933461bf4bd774b69f4a624e2e6b..09fa73c4ed0635f01de7129858eb31f65a97efc8 100644 (file)
@@ -34,5 +34,7 @@ PendingIO::PendingIO(action_id_t id,
 
 void PendingIO::completed(librbd::completion_t cb) {
   dout(ACTION_LEVEL) << "Completed pending IO #" << m_id << dendl;
+  ssize_t r = m_completion.get_return_value();
+  assertf(r >= 0, "id = %d, r = %d", m_id, r);
   m_worker.remove_pending(shared_from_this());
 }
index 622a6c6bcfd719503478453deb8d32dcad64b30f..839787015b8b03f02330cd4e92d9821d3dd2382e 100644 (file)
@@ -170,7 +170,8 @@ void AioReadAction::perform(ActionCtx &worker) {
   assert(image);
   PendingIO::ptr io(new PendingIO(pending_io_id(), worker));
   worker.add_pending(io);
-  image->aio_read(m_offset, m_length, io->bufferlist(), &io->completion());
+  int r = image->aio_read(m_offset, m_length, io->bufferlist(), &io->completion());
+  assertf(r >= 0, "id = %d, r = %d", id(), r);
 }
 
 std::ostream& AioReadAction::dump(std::ostream& o) const {
@@ -202,7 +203,8 @@ void ReadAction::perform(ActionCtx &worker) {
   librbd::Image *image = worker.get_image(m_imagectx_id);
   PendingIO::ptr io(new PendingIO(pending_io_id(), worker));
   worker.add_pending(io);
-  image->read(m_offset, m_length, io->bufferlist());
+  ssize_t r = image->read(m_offset, m_length, io->bufferlist());
+  assertf(r >= 0, "id = %d, r = %d", id(), r);
   worker.remove_pending(io);
 }
 
@@ -236,7 +238,8 @@ void AioWriteAction::perform(ActionCtx &worker) {
   PendingIO::ptr io(new PendingIO(pending_io_id(), worker));
   io->bufferlist().append_zero(m_length);
   worker.add_pending(io);
-  image->aio_write(m_offset, m_length, io->bufferlist(), &io->completion());
+  int r = image->aio_write(m_offset, m_length, io->bufferlist(), &io->completion());
+  assertf(r >= 0, "id = %d, r = %d", id(), r);
 }
 
 std::ostream& AioWriteAction::dump(std::ostream& o) const {
@@ -269,7 +272,8 @@ void WriteAction::perform(ActionCtx &worker) {
   PendingIO::ptr io(new PendingIO(pending_io_id(), worker));
   worker.add_pending(io);
   io->bufferlist().append_zero(m_length);
-  image->write(m_offset, m_length, io->bufferlist());
+  ssize_t r = image->write(m_offset, m_length, io->bufferlist());
+  assertf(r >= 0, "id = %d, r = %d", id(), r);
   worker.remove_pending(io);
 }