From a9b9477a44d4556f6827e6dc4b94a5f1f61ce8e1 Mon Sep 17 00:00:00 2001 From: kungf Date: Fri, 30 Mar 2018 20:15:42 +0800 Subject: [PATCH] os/bluestore: change the type of aio_t:res to long io_event::res was assigned to io_t::rval, but io_event::res is long, if rval is int, this will cause overflow. Fixes: http://tracker.ceph.com/issues/23527 Signed-off-by: kungf --- src/os/bluestore/KernelDevice.cc | 2 +- src/os/bluestore/aio.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 83e6bb5c70a..9bae23ce5bf 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -408,7 +408,7 @@ void KernelDevice::_aio_thread() // later flush() occurs. io_since_flush.store(true); - int r = aio[i]->get_return_value(); + long r = aio[i]->get_return_value(); if (r < 0) { derr << __func__ << " got " << cpp_strerror(r) << dendl; if (ioc->allow_eio && r == -EIO) { diff --git a/src/os/bluestore/aio.h b/src/os/bluestore/aio.h index 1dc7413ed64..1c51ec4be69 100644 --- a/src/os/bluestore/aio.h +++ b/src/os/bluestore/aio.h @@ -16,7 +16,7 @@ struct aio_t { int fd; boost::container::small_vector iov; uint64_t offset, length; - int rval; + long rval; bufferlist bl; ///< write payload (so that it remains stable for duration) boost::intrusive::list_member_hook<> queue_item; @@ -37,7 +37,7 @@ struct aio_t { bl.append(std::move(p)); } - int get_return_value() { + long get_return_value() { return rval; } }; -- 2.39.5