From ea67ca03afa407f340e65df926f7a754e95ad680 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Thu, 9 Jul 2015 15:07:58 +0300 Subject: [PATCH] file: fix file::size() signature file::size() uses size_t as an alias for uint64_t, but it isn't. Use the right type. --- core/file.hh | 4 ++-- core/reactor.cc | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/file.hh b/core/file.hh index b51bb49f97..67f72be78f 100644 --- a/core/file.hh +++ b/core/file.hh @@ -73,7 +73,7 @@ public: virtual future<> truncate(uint64_t length) = 0; virtual future<> discard(uint64_t offset, uint64_t length) = 0; virtual future<> allocate(uint64_t position, uint64_t length) = 0; - virtual future size(void) = 0; + virtual future size(void) = 0; virtual future<> close() = 0; virtual subscription list_directory(std::function (directory_entry de)> next) = 0; @@ -307,7 +307,7 @@ public: } /// Gets the file size. - future size() { + future size() { return _file_impl->size(); } diff --git a/core/reactor.cc b/core/reactor.cc index cd75bc75b0..a174abe425 100644 --- a/core/reactor.cc +++ b/core/reactor.cc @@ -706,13 +706,13 @@ blockdev_file_impl::allocate(uint64_t position, uint64_t length) { return make_ready_future<>(); } -future +future posix_file_impl::size(void) { auto r = ::lseek(_fd, 0, SEEK_END); if (r == -1) { - return make_exception_future(std::system_error(errno, std::system_category())); + return make_exception_future(std::system_error(errno, std::system_category())); } - return make_ready_future(r); + return make_ready_future(r); } future<> @@ -725,15 +725,15 @@ posix_file_impl::close() { }); } -future +future blockdev_file_impl::size(void) { return engine()._thread_pool.submit>([this] { - size_t size; + uint64_t size; int ret = ::ioctl(_fd, BLKGETSIZE64, &size); return wrap_syscall(ret, size); - }).then([] (syscall_result_extra ret) { + }).then([] (syscall_result_extra ret) { ret.throw_if_error(); - return make_ready_future(ret.extra); + return make_ready_future(ret.extra); }); }