From a06e347a78c306ce6ca89f793db7d2719b4a1dff Mon Sep 17 00:00:00 2001 From: Adam Crume Date: Fri, 18 Jul 2014 14:37:57 -0700 Subject: [PATCH] rbd-replay: Check that return values are non-negative Signed-off-by: Adam Crume --- src/rbd_replay/PendingIO.cc | 2 ++ src/rbd_replay/actions.cc | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/rbd_replay/PendingIO.cc b/src/rbd_replay/PendingIO.cc index b4cc99d958bd9..09fa73c4ed063 100644 --- a/src/rbd_replay/PendingIO.cc +++ b/src/rbd_replay/PendingIO.cc @@ -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()); } diff --git a/src/rbd_replay/actions.cc b/src/rbd_replay/actions.cc index 622a6c6bcfd71..839787015b8b0 100644 --- a/src/rbd_replay/actions.cc +++ b/src/rbd_replay/actions.cc @@ -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); } -- 2.39.5