ceph: reserve one more caps space when doing readdir
authorYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 13 Apr 2010 18:45:56 +0000 (11:45 -0700)
committerSage Weil <sage@newdream.net>
Tue, 13 Apr 2010 19:28:54 +0000 (12:28 -0700)
We were missing space for the directory cap.  The result was a BUG at
fs/ceph/caps.c:2178.

Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/dir.c

index 7505b4f1f5971dd37ba25c6b736be1deab22f743..159f588ca1609b2188b21bf11806c8a2aa4065af 100644 (file)
@@ -311,7 +311,7 @@ more:
                req->r_readdir_offset = fi->next_offset;
                req->r_args.readdir.frag = cpu_to_le32(frag);
                req->r_args.readdir.max_entries = cpu_to_le32(max_entries);
-               req->r_num_caps = max_entries;
+               req->r_num_caps = max_entries + 1;
                err = ceph_mdsc_do_request(mdsc, NULL, req);
                if (err < 0) {
                        ceph_mdsc_put_request(req);