req->wb_offset  = offset;
        req->wb_pgbase  = pgbase;
        req->wb_bytes   = count;
-       req->wb_context = get_nfs_open_context(ctx);
        kref_init(&req->wb_kref);
        req->wb_nio = 0;
        return req;
 static void nfs_clear_request(struct nfs_page *req)
 {
        struct page *page = req->wb_page;
-       struct nfs_open_context *ctx = req->wb_context;
        struct nfs_lock_context *l_ctx = req->wb_lock_context;
+       struct nfs_open_context *ctx;
 
        if (page != NULL) {
                put_page(page);
        if (l_ctx != NULL) {
                if (atomic_dec_and_test(&l_ctx->io_count)) {
                        wake_up_var(&l_ctx->io_count);
+                       ctx = l_ctx->open_context;
                        if (test_bit(NFS_CONTEXT_UNLOCK, &ctx->flags))
                                rpc_wake_up(&NFS_SERVER(d_inode(ctx->dentry))->uoc_rpcwaitq);
                }
                nfs_put_lock_context(l_ctx);
                req->wb_lock_context = NULL;
        }
-       if (ctx != NULL) {
-               put_nfs_open_context(ctx);
-               req->wb_context = NULL;
-       }
 }
 
 /**
 
 struct nfs_page {
        struct list_head        wb_list;        /* Defines state of page: */
        struct page             *wb_page;       /* page to read in/write out */
-       struct nfs_open_context *wb_context;    /* File state context info */
        struct nfs_lock_context *wb_lock_context;       /* lock context info */
        pgoff_t                 wb_index;       /* Offset >> PAGE_SHIFT */
        unsigned int            wb_offset,      /* Offset & ~PAGE_MASK */
 static inline struct nfs_open_context *
 nfs_req_openctx(struct nfs_page *req)
 {
-       return req->wb_context;
+       return req->wb_lock_context->open_context;
 }
 
 #endif /* _LINUX_NFS_PAGE_H */