diff options
author | Sage Weil <sage@newdream.net> | 2011-11-17 15:01:17 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2011-11-17 15:01:25 -0800 |
commit | ef5ca293a7eee6fd37c1ea8e8027a5f6d83b66da (patch) | |
tree | 4c948e3b2e41003b28b3850f18b47f340ebfbcfa | |
parent | d61ba6441b375f9849714305808a761bee5db14c (diff) | |
download | ceph-ef5ca293a7eee6fd37c1ea8e8027a5f6d83b66da.tar.gz |
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 <sage@newdream.net>
-rw-r--r-- | src/client/fuse_ll.cc | 9 |
1 files changed, 3 insertions, 6 deletions
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; } |