]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os: fix return code of _do_copy_range
authorxie xingguo <xie.xingguo@zte.com.cn>
Mon, 4 Jan 2016 03:29:12 +0000 (11:29 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Mon, 4 Jan 2016 03:29:12 +0000 (11:29 +0800)
Shall return a negative return code instead, otherwise caller will unable to handle it.

Fixes: #14194
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/filestore/FileStore.cc

index 6601f8be6a4f93dbb8984bdd36641a26d9250139..57bde5710279f284e0a4550f0e4ab3d4f565186a 100644 (file)
@@ -3436,7 +3436,7 @@ int FileStore::_do_copy_range(int from, int to, uint64_t srcoff, uint64_t len, u
   if (backend->has_splice()) {
     int pipefd[2];
     if (pipe(pipefd) < 0) {
-      r = errno;
+      r = -errno;
       derr << " pipe " << " got " << cpp_strerror(r) << dendl;
       return r;
     }
@@ -3477,13 +3477,13 @@ int FileStore::_do_copy_range(int from, int to, uint64_t srcoff, uint64_t len, u
 
     actual = ::lseek64(from, srcoff, SEEK_SET);
     if (actual != (int64_t)srcoff) {
-      r = errno;
+      r = -errno;
       derr << "lseek64 to " << srcoff << " got " << cpp_strerror(r) << dendl;
       return r;
     }
     actual = ::lseek64(to, dstoff, SEEK_SET);
     if (actual != (int64_t)dstoff) {
-      r = errno;
+      r = -errno;
       derr << "lseek64 to " << dstoff << " got " << cpp_strerror(r) << dendl;
       return r;
     }