diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-24 12:17:12 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-24 12:17:12 -0400 |
| commit | d333fc8d3006296f2893d17817bc0f67cf87f353 (patch) | |
| tree | f759092ae962b0071e805e4526ffff57995d487b /fs/nfs/write.c | |
| parent | 1a93fa86bf6eb0d8bed84ef18c8b35be389edee5 (diff) | |
| parent | d4a8f3677fe2c2fc86443254fe42825e244c194d (diff) | |
Merge branch 'fixes' of git://git.linux-nfs.org/pub/linux/nfs-2.6
* 'fixes' of git://git.linux-nfs.org/pub/linux/nfs-2.6:
NFS: Fix nfs_direct_dirty_pages()
NFS: Fix handful of compiler warnings in direct.c
NFS: Avoid a deadlock situation on write
Diffstat (limited to 'fs/nfs/write.c')
| -rw-r--r-- | fs/nfs/write.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index b084c03ce493..af344a158e01 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
| @@ -273,8 +273,6 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio, | |||
| 273 | * request as dirty (in which case we don't care). | 273 | * request as dirty (in which case we don't care). |
| 274 | */ | 274 | */ |
| 275 | spin_unlock(req_lock); | 275 | spin_unlock(req_lock); |
| 276 | /* Prevent deadlock! */ | ||
| 277 | nfs_pageio_complete(pgio); | ||
| 278 | ret = nfs_wait_on_request(req); | 276 | ret = nfs_wait_on_request(req); |
| 279 | nfs_release_request(req); | 277 | nfs_release_request(req); |
| 280 | if (ret != 0) | 278 | if (ret != 0) |
| @@ -321,6 +319,8 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbc | |||
| 321 | pgio = &mypgio; | 319 | pgio = &mypgio; |
| 322 | } | 320 | } |
| 323 | 321 | ||
| 322 | nfs_pageio_cond_complete(pgio, page->index); | ||
| 323 | |||
| 324 | err = nfs_page_async_flush(pgio, page); | 324 | err = nfs_page_async_flush(pgio, page); |
| 325 | if (err <= 0) | 325 | if (err <= 0) |
| 326 | goto out; | 326 | goto out; |
| @@ -329,6 +329,8 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbc | |||
| 329 | if (!offset) | 329 | if (!offset) |
| 330 | goto out; | 330 | goto out; |
| 331 | 331 | ||
| 332 | nfs_pageio_cond_complete(pgio, page->index); | ||
| 333 | |||
| 332 | ctx = nfs_find_open_context(inode, NULL, FMODE_WRITE); | 334 | ctx = nfs_find_open_context(inode, NULL, FMODE_WRITE); |
| 333 | if (ctx == NULL) { | 335 | if (ctx == NULL) { |
| 334 | err = -EBADF; | 336 | err = -EBADF; |
