struct ceph_pg pgid;
        int o = -1;
        int err;
-       struct ceph_osd *newosd = NULL;
 
        dout("map_osds %p tid %lld\n", req, req->r_tid);
        err = ceph_calc_object_layout(&reqhead->layout, req->r_oid,
        if (req->r_osd) {
                __cancel_request(req);
                list_del_init(&req->r_osd_item);
-               if (list_empty(&req->r_osd->o_requests)) {
-                       /* try to re-use r_osd if possible */
-                       newosd = get_osd(req->r_osd);
-                       __remove_osd(osdc, newosd);
-               }
                req->r_osd = NULL;
        }
 
        req->r_osd = __lookup_osd(osdc, o);
        if (!req->r_osd && o >= 0) {
-               if (newosd) {
-                       req->r_osd = newosd;
-                       newosd = NULL;
-               } else {
-                       err = -ENOMEM;
-                       req->r_osd = create_osd(osdc);
-                       if (!req->r_osd)
-                               goto out;
-               }
+               err = -ENOMEM;
+               req->r_osd = create_osd(osdc);
+               if (!req->r_osd)
+                       goto out;
 
                dout("map_osds osd %p is osd%d\n", req->r_osd, o);
                req->r_osd->o_osd = o;
        err = 1;   /* osd changed */
 
 out:
-       if (newosd)
-               put_osd(newosd);
        return err;
 }