aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r--fs/nfs/pagelist.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index d846d39a31ef..fe90130bd7a9 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -51,9 +51,7 @@ nfs_page_free(struct nfs_page *p)
51 * @count: number of bytes to read/write 51 * @count: number of bytes to read/write
52 * 52 *
53 * The page must be locked by the caller. This makes sure we never 53 * The page must be locked by the caller. This makes sure we never
54 * create two different requests for the same page, and avoids 54 * create two different requests for the same page.
55 * a possible deadlock when we reach the hard limit on the number
56 * of dirty pages.
57 * User should ensure it is safe to sleep in this function. 55 * User should ensure it is safe to sleep in this function.
58 */ 56 */
59struct nfs_page * 57struct nfs_page *
@@ -64,16 +62,12 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode,
64 struct nfs_server *server = NFS_SERVER(inode); 62 struct nfs_server *server = NFS_SERVER(inode);
65 struct nfs_page *req; 63 struct nfs_page *req;
66 64
67 /* Deal with hard limits. */
68 for (;;) { 65 for (;;) {
69 /* try to allocate the request struct */ 66 /* try to allocate the request struct */
70 req = nfs_page_alloc(); 67 req = nfs_page_alloc();
71 if (req != NULL) 68 if (req != NULL)
72 break; 69 break;
73 70
74 /* Try to free up at least one request in order to stay
75 * below the hard limit
76 */
77 if (signalled() && (server->flags & NFS_MOUNT_INTR)) 71 if (signalled() && (server->flags & NFS_MOUNT_INTR))
78 return ERR_PTR(-ERESTARTSYS); 72 return ERR_PTR(-ERESTARTSYS);
79 yield(); 73 yield();