req = nfs_list_entry(hdr->pages.next);
                nfs_list_remove_request(req);
 -              switch (bit) {
 -              case NFS_IOHDR_NEED_RESCHED:
 -              case NFS_IOHDR_NEED_COMMIT:
 +              if (request_commit) {
                        kref_get(&req->wb_kref);
                        nfs_mark_request_commit(req, hdr->lseg, &cinfo);
-                       do_destroy = false;
                }
                nfs_unlock_and_release_request(req);
        }
 
  int nfs_iocounter_wait(struct nfs_io_counter *c);
  
  extern const struct nfs_pageio_ops nfs_pgio_rw_ops;
 -struct nfs_rw_header *nfs_rw_header_alloc(const struct nfs_rw_ops *);
 -void nfs_rw_header_free(struct nfs_pgio_header *);
 -void nfs_pgio_data_release(struct nfs_pgio_data *);
 +struct nfs_pgio_header *nfs_pgio_header_alloc(const struct nfs_rw_ops *);
 +void nfs_pgio_header_free(struct nfs_pgio_header *);
 +void nfs_pgio_data_destroy(struct nfs_pgio_header *);
  int nfs_generic_pgio(struct nfs_pageio_descriptor *, struct nfs_pgio_header *);
 -int nfs_initiate_pgio(struct rpc_clnt *, struct nfs_pgio_data *,
 +int nfs_initiate_pgio(struct rpc_clnt *, struct nfs_pgio_header *,
                      const struct rpc_call_ops *, int, int);
+ void nfs_free_request(struct nfs_page *req);
  
  static inline void nfs_iocounter_init(struct nfs_io_counter *c)
  {