From: Sage Weil Date: Thu, 17 Nov 2011 23:01:17 +0000 (-0800) Subject: fuse: fix readdir return code X-Git-Tag: v0.39~40 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ef5ca293a7eee6fd37c1ea8e8027a5f6d83b66da;p=ceph-ci.git fuse: fix readdir return code Ignore ENOSPC generated by our own callback, as it is only used to terminate the loop. Broken by commit cd90061239a598f6fca94326b6d2c32f325c96eb. Fixes: #1728 Signed-off-by: Sage Weil --- diff --git a/src/client/fuse_ll.cc b/src/client/fuse_ll.cc index bbfab9d04b9..cd2e4ae9ec4 100644 --- a/src/client/fuse_ll.cc +++ b/src/client/fuse_ll.cc @@ -420,14 +420,11 @@ static void ceph_ll_readdir(fuse_req_t req, fuse_ino_t ino, size_t size, rc.pos = 0; rc.snap = fino_snap(ino); - int r; - r = client->readdir_r_cb(dirp, ceph_ll_add_dirent, &rc); - - if (r == 0) { + int r = client->readdir_r_cb(dirp, ceph_ll_add_dirent, &rc); + if (r == 0 || r == -ENOSPC) /* ignore ENOSPC from our callback */ fuse_reply_buf(req, rc.buf, rc.pos); - } else { + else fuse_reply_err(req, -r); - } delete[] rc.buf; }