call->key = fc->key;
        call->out_scb = scb;
        call->out_volsync = NULL;
-       call->read_request = req;
+       call->read_request = afs_get_read(req);
 
        /* marshall the parameters */
        bp = call->request;
        bp[6] = 0;
        bp[7] = htonl(lower_32_bits(req->len));
 
-       refcount_inc(&req->usage);
        afs_use_fs_server(call, fc->cbi);
        trace_afs_make_fs_call(call, &vnode->fid);
        afs_set_fc_call(call, fc);
        call->key = fc->key;
        call->out_scb = scb;
        call->out_volsync = NULL;
-       call->read_request = req;
+       call->read_request = afs_get_read(req);
 
        /* marshall the parameters */
        bp = call->request;
        bp[4] = htonl(lower_32_bits(req->pos));
        bp[5] = htonl(lower_32_bits(req->len));
 
-       refcount_inc(&req->usage);
        afs_use_fs_server(call, fc->cbi);
        trace_afs_make_fs_call(call, &vnode->fid);
        afs_set_fc_call(call, fc);
 
 extern int afs_page_filler(void *, struct page *);
 extern void afs_put_read(struct afs_read *);
 
+static inline struct afs_read *afs_get_read(struct afs_read *req)
+{
+       refcount_inc(&req->usage);
+       return req;
+}
+
 /*
  * flock.c
  */
 
        call->key = fc->key;
        call->out_scb = scb;
        call->out_volsync = NULL;
-       call->read_request = req;
+       call->read_request = afs_get_read(req);
 
        /* marshall the parameters */
        bp = call->request;
        bp = xdr_encode_u64(bp, req->len);
        yfs_check_req(call, bp);
 
-       refcount_inc(&req->usage);
        afs_use_fs_server(call, fc->cbi);
        trace_afs_make_fs_call(call, &vnode->fid);
        afs_set_fc_call(call, fc);