From ef5ca293a7eee6fd37c1ea8e8027a5f6d83b66da Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 17 Nov 2011 15:01:17 -0800 Subject: [PATCH] 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 --- src/client/fuse_ll.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/client/fuse_ll.cc b/src/client/fuse_ll.cc index bbfab9d04b9e1..cd2e4ae9ec4a3 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; } -- 2.39.5