diff options
| -rw-r--r-- | fs/nfs/pagelist.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index 919490232e17..137b549e63db 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c | |||
| @@ -65,6 +65,13 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode, | |||
| 65 | if (req == NULL) | 65 | if (req == NULL) |
| 66 | return ERR_PTR(-ENOMEM); | 66 | return ERR_PTR(-ENOMEM); |
| 67 | 67 | ||
| 68 | /* get lock context early so we can deal with alloc failures */ | ||
| 69 | req->wb_lock_context = nfs_get_lock_context(ctx); | ||
| 70 | if (req->wb_lock_context == NULL) { | ||
| 71 | nfs_page_free(req); | ||
| 72 | return ERR_PTR(-ENOMEM); | ||
| 73 | } | ||
| 74 | |||
| 68 | /* Initialize the request struct. Initially, we assume a | 75 | /* Initialize the request struct. Initially, we assume a |
| 69 | * long write-back delay. This will be adjusted in | 76 | * long write-back delay. This will be adjusted in |
| 70 | * update_nfs_request below if the region is not locked. */ | 77 | * update_nfs_request below if the region is not locked. */ |
| @@ -79,7 +86,6 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode, | |||
| 79 | req->wb_pgbase = offset; | 86 | req->wb_pgbase = offset; |
| 80 | req->wb_bytes = count; | 87 | req->wb_bytes = count; |
| 81 | req->wb_context = get_nfs_open_context(ctx); | 88 | req->wb_context = get_nfs_open_context(ctx); |
| 82 | req->wb_lock_context = nfs_get_lock_context(ctx); | ||
| 83 | kref_init(&req->wb_kref); | 89 | kref_init(&req->wb_kref); |
| 84 | return req; | 90 | return req; |
| 85 | } | 91 | } |
