diff options
Diffstat (limited to 'fs/nfs/write.c')
| -rw-r--r-- | fs/nfs/write.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 53eb26c16b50..d171696017f4 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
| @@ -178,7 +178,7 @@ static int wb_priority(struct writeback_control *wbc) | |||
| 178 | { | 178 | { |
| 179 | if (wbc->for_reclaim) | 179 | if (wbc->for_reclaim) |
| 180 | return FLUSH_HIGHPRI | FLUSH_STABLE; | 180 | return FLUSH_HIGHPRI | FLUSH_STABLE; |
| 181 | if (wbc->for_kupdate) | 181 | if (wbc->for_kupdate || wbc->for_background) |
| 182 | return FLUSH_LOWPRI; | 182 | return FLUSH_LOWPRI; |
| 183 | return 0; | 183 | return 0; |
| 184 | } | 184 | } |
| @@ -774,7 +774,7 @@ int nfs_updatepage(struct file *file, struct page *page, | |||
| 774 | */ | 774 | */ |
| 775 | if (nfs_write_pageuptodate(page, inode) && | 775 | if (nfs_write_pageuptodate(page, inode) && |
| 776 | inode->i_flock == NULL && | 776 | inode->i_flock == NULL && |
| 777 | !(file->f_flags & O_SYNC)) { | 777 | !(file->f_flags & O_DSYNC)) { |
| 778 | count = max(count + offset, nfs_page_length(page)); | 778 | count = max(count + offset, nfs_page_length(page)); |
| 779 | offset = 0; | 779 | offset = 0; |
| 780 | } | 780 | } |
| @@ -1216,7 +1216,7 @@ int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data) | |||
| 1216 | */ | 1216 | */ |
| 1217 | argp->stable = NFS_FILE_SYNC; | 1217 | argp->stable = NFS_FILE_SYNC; |
| 1218 | } | 1218 | } |
| 1219 | nfs4_restart_rpc(task, server->nfs_client); | 1219 | nfs_restart_rpc(task, server->nfs_client); |
| 1220 | return -EAGAIN; | 1220 | return -EAGAIN; |
| 1221 | } | 1221 | } |
| 1222 | if (time_before(complain, jiffies)) { | 1222 | if (time_before(complain, jiffies)) { |
| @@ -1228,7 +1228,6 @@ int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data) | |||
| 1228 | /* Can't do anything about it except throw an error. */ | 1228 | /* Can't do anything about it except throw an error. */ |
| 1229 | task->tk_status = -EIO; | 1229 | task->tk_status = -EIO; |
| 1230 | } | 1230 | } |
| 1231 | nfs4_sequence_free_slot(server->nfs_client, &data->res.seq_res); | ||
| 1232 | return 0; | 1231 | return 0; |
| 1233 | } | 1232 | } |
| 1234 | 1233 | ||
| @@ -1612,15 +1611,16 @@ int nfs_migrate_page(struct address_space *mapping, struct page *newpage, | |||
| 1612 | if (ret) | 1611 | if (ret) |
| 1613 | goto out_unlock; | 1612 | goto out_unlock; |
| 1614 | page_cache_get(newpage); | 1613 | page_cache_get(newpage); |
| 1614 | spin_lock(&mapping->host->i_lock); | ||
| 1615 | req->wb_page = newpage; | 1615 | req->wb_page = newpage; |
| 1616 | SetPagePrivate(newpage); | 1616 | SetPagePrivate(newpage); |
| 1617 | set_page_private(newpage, page_private(page)); | 1617 | set_page_private(newpage, (unsigned long)req); |
| 1618 | ClearPagePrivate(page); | 1618 | ClearPagePrivate(page); |
| 1619 | set_page_private(page, 0); | 1619 | set_page_private(page, 0); |
| 1620 | spin_unlock(&mapping->host->i_lock); | ||
| 1620 | page_cache_release(page); | 1621 | page_cache_release(page); |
| 1621 | out_unlock: | 1622 | out_unlock: |
| 1622 | nfs_clear_page_tag_locked(req); | 1623 | nfs_clear_page_tag_locked(req); |
| 1623 | nfs_release_request(req); | ||
| 1624 | out: | 1624 | out: |
| 1625 | return ret; | 1625 | return ret; |
| 1626 | } | 1626 | } |
