]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fuse: fix readdir return code
authorSage Weil <sage@newdream.net>
Thu, 17 Nov 2011 23:01:17 +0000 (15:01 -0800)
committerSage Weil <sage@newdream.net>
Thu, 17 Nov 2011 23:01:25 +0000 (15:01 -0800)
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>
src/client/fuse_ll.cc

index bbfab9d04b9e1b0217160fdd5a3100c84f5f262f..cd2e4ae9ec4a334980a7048a10d6dd8f576c1b8a 100644 (file)
@@ -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;
 }