]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
check do_request result codes
authorSage Weil <sage@newdream.net>
Wed, 9 Jan 2008 19:38:22 +0000 (11:38 -0800)
committerSage Weil <sage@newdream.net>
Wed, 9 Jan 2008 19:38:22 +0000 (11:38 -0800)
src/kernel/dir.c

index a2be6a763fe21e4969ae6dcc693ebaaa4803b8e0..7c5e5f803b1406cc324f6062c4ad22b885ae72e1 100644 (file)
@@ -77,7 +77,9 @@ nextfrag:
                rhead->args.readdir.frag = cpu_to_le32(frag);
                if ((err = ceph_mdsc_do_request(mdsc, req, &fi->rinfo, -1)) < 0)
                    return err;
-               dout(10, "dir_readdir got and parsed readdir result on frag %u\n", frag);
+               err = le32_to_cpu(fi->rinfo.head->result);
+               dout(10, "dir_readdir got and parsed readdir result=%d on frag %u\n", err, frag);
+               if (err < 0) return err;
                
                /* pre-populate dentry cache */
                parent = filp->f_dentry;
@@ -169,6 +171,10 @@ static struct dentry *ceph_dir_lookup(struct inode *dir, struct dentry *dentry,
                return ERR_PTR(PTR_ERR(req));
        if ((err = ceph_mdsc_do_request(mdsc, req, &rinfo, -1)) < 0)
                return ERR_PTR(err);
+       err = le32_to_cpu(rinfo.head->result);
+       dout(20, "dir_readdir result=%d\n", err);
+       if (err < 0) 
+               return ERR_PTR(err);
 
        if (rinfo.trace_nr > 0) {
                ino = le64_to_cpu(rinfo.trace_in[rinfo.trace_nr-1].in->ino);