From cf6c1d32e663ed203f70e97a66d5e28fa897d113 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 (cherry picked from commit a9b9477a44d4556f6827e6dc4b94a5f1f61ce8e1) --- 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 b3cc7795d9a92..ec4cc8bb0f844 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -370,7 +370,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 2517e5f64fbbb..b2739d44cbe54 100644 --- a/src/os/bluestore/aio.h +++ b/src/os/bluestore/aio.h @@ -19,7 +19,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; @@ -40,7 +40,7 @@ struct aio_t { bl.append(std::move(p)); } - int get_return_value() { + long get_return_value() { return rval; } }; -- 2.39.5