From: xie xingguo Date: Mon, 18 Jul 2016 10:07:30 +0000 (+0800) Subject: os/bluestore: fix error handling of posix_fadvise() syscall X-Git-Tag: ses5-milestone5~354^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F10327%2Fhead;p=ceph.git os/bluestore: fix error handling of posix_fadvise() syscall According to Linux man page: On success, zero is returned. On error, an error number is returned. Signed-off-by: xie xingguo --- diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 8c1d061ee7d..52fca98ab2b 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -91,8 +91,8 @@ int KernelDevice::open(string p) // disable readahead as it will wreak havoc on our mix of // directio/aio and buffered io. r = posix_fadvise(fd_buffered, 0, 0, POSIX_FADV_RANDOM); - if (r < 0) { - r = -errno; + if (r) { + r = -r; derr << __func__ << " open got: " << cpp_strerror(r) << dendl; goto out_fail; } @@ -578,8 +578,8 @@ int KernelDevice::invalidate_cache(uint64_t off, uint64_t len) assert(off % block_size == 0); assert(len % block_size == 0); int r = posix_fadvise(fd_buffered, off, len, POSIX_FADV_DONTNEED); - if (r < 0) { - r = -errno; + if (r) { + r = -r; derr << __func__ << " 0x" << std::hex << off << "~" << len << std::dec << " error: " << cpp_strerror(r) << dendl; }