diff options
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/client.c | 6 | ||||
-rw-r--r-- | fs/nfs/inode.c | 2 | ||||
-rw-r--r-- | fs/nfs/write.c | 11 |
3 files changed, 15 insertions, 4 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index a532ee1274..70587f383f 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -627,6 +627,7 @@ static void nfs_server_set_fsinfo(struct nfs_server *server, struct nfs_fsinfo * | |||
627 | if (server->rsize > NFS_MAX_FILE_IO_SIZE) | 627 | if (server->rsize > NFS_MAX_FILE_IO_SIZE) |
628 | server->rsize = NFS_MAX_FILE_IO_SIZE; | 628 | server->rsize = NFS_MAX_FILE_IO_SIZE; |
629 | server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; | 629 | server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; |
630 | |||
630 | server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD; | 631 | server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD; |
631 | 632 | ||
632 | if (server->wsize > max_rpc_payload) | 633 | if (server->wsize > max_rpc_payload) |
@@ -677,6 +678,10 @@ static int nfs_probe_fsinfo(struct nfs_server *server, struct nfs_fh *mntfh, str | |||
677 | goto out_error; | 678 | goto out_error; |
678 | 679 | ||
679 | nfs_server_set_fsinfo(server, &fsinfo); | 680 | nfs_server_set_fsinfo(server, &fsinfo); |
681 | error = bdi_init(&server->backing_dev_info); | ||
682 | if (error) | ||
683 | goto out_error; | ||
684 | |||
680 | 685 | ||
681 | /* Get some general file system info */ | 686 | /* Get some general file system info */ |
682 | if (server->namelen == 0) { | 687 | if (server->namelen == 0) { |
@@ -756,6 +761,7 @@ void nfs_free_server(struct nfs_server *server) | |||
756 | nfs_put_client(server->nfs_client); | 761 | nfs_put_client(server->nfs_client); |
757 | 762 | ||
758 | nfs_free_iostats(server->io_stats); | 763 | nfs_free_iostats(server->io_stats); |
764 | bdi_destroy(&server->backing_dev_info); | ||
759 | kfree(server); | 765 | kfree(server); |
760 | nfs_release_automount_timer(); | 766 | nfs_release_automount_timer(); |
761 | dprintk("<-- nfs_free_server()\n"); | 767 | dprintk("<-- nfs_free_server()\n"); |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 035c769b71..6c22453d77 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -1154,7 +1154,7 @@ static inline void nfs4_init_once(struct nfs_inode *nfsi) | |||
1154 | #endif | 1154 | #endif |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) | 1157 | static void init_once(struct kmem_cache * cachep, void *foo) |
1158 | { | 1158 | { |
1159 | struct nfs_inode *nfsi = (struct nfs_inode *) foo; | 1159 | struct nfs_inode *nfsi = (struct nfs_inode *) foo; |
1160 | 1160 | ||
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index e2bb66c344..0cf9d1cd9b 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -242,10 +242,8 @@ static void nfs_end_page_writeback(struct page *page) | |||
242 | struct nfs_server *nfss = NFS_SERVER(inode); | 242 | struct nfs_server *nfss = NFS_SERVER(inode); |
243 | 243 | ||
244 | end_page_writeback(page); | 244 | end_page_writeback(page); |
245 | if (atomic_long_dec_return(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH) { | 245 | if (atomic_long_dec_return(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH) |
246 | clear_bdi_congested(&nfss->backing_dev_info, WRITE); | 246 | clear_bdi_congested(&nfss->backing_dev_info, WRITE); |
247 | congestion_end(WRITE); | ||
248 | } | ||
249 | } | 247 | } |
250 | 248 | ||
251 | /* | 249 | /* |
@@ -449,6 +447,7 @@ nfs_mark_request_commit(struct nfs_page *req) | |||
449 | NFS_PAGE_TAG_COMMIT); | 447 | NFS_PAGE_TAG_COMMIT); |
450 | spin_unlock(&inode->i_lock); | 448 | spin_unlock(&inode->i_lock); |
451 | inc_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); | 449 | inc_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); |
450 | inc_bdi_stat(req->wb_page->mapping->backing_dev_info, BDI_RECLAIMABLE); | ||
452 | __mark_inode_dirty(inode, I_DIRTY_DATASYNC); | 451 | __mark_inode_dirty(inode, I_DIRTY_DATASYNC); |
453 | } | 452 | } |
454 | 453 | ||
@@ -535,6 +534,8 @@ static void nfs_cancel_commit_list(struct list_head *head) | |||
535 | while(!list_empty(head)) { | 534 | while(!list_empty(head)) { |
536 | req = nfs_list_entry(head->next); | 535 | req = nfs_list_entry(head->next); |
537 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); | 536 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); |
537 | dec_bdi_stat(req->wb_page->mapping->backing_dev_info, | ||
538 | BDI_RECLAIMABLE); | ||
538 | nfs_list_remove_request(req); | 539 | nfs_list_remove_request(req); |
539 | clear_bit(PG_NEED_COMMIT, &(req)->wb_flags); | 540 | clear_bit(PG_NEED_COMMIT, &(req)->wb_flags); |
540 | nfs_inode_remove_request(req); | 541 | nfs_inode_remove_request(req); |
@@ -1195,6 +1196,8 @@ nfs_commit_list(struct inode *inode, struct list_head *head, int how) | |||
1195 | nfs_list_remove_request(req); | 1196 | nfs_list_remove_request(req); |
1196 | nfs_mark_request_commit(req); | 1197 | nfs_mark_request_commit(req); |
1197 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); | 1198 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); |
1199 | dec_bdi_stat(req->wb_page->mapping->backing_dev_info, | ||
1200 | BDI_RECLAIMABLE); | ||
1198 | nfs_clear_page_tag_locked(req); | 1201 | nfs_clear_page_tag_locked(req); |
1199 | } | 1202 | } |
1200 | return -ENOMEM; | 1203 | return -ENOMEM; |
@@ -1220,6 +1223,8 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata) | |||
1220 | nfs_list_remove_request(req); | 1223 | nfs_list_remove_request(req); |
1221 | clear_bit(PG_NEED_COMMIT, &(req)->wb_flags); | 1224 | clear_bit(PG_NEED_COMMIT, &(req)->wb_flags); |
1222 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); | 1225 | dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); |
1226 | dec_bdi_stat(req->wb_page->mapping->backing_dev_info, | ||
1227 | BDI_RECLAIMABLE); | ||
1223 | 1228 | ||
1224 | dprintk("NFS: commit (%s/%Ld %d@%Ld)", | 1229 | dprintk("NFS: commit (%s/%Ld %d@%Ld)", |
1225 | req->wb_context->path.dentry->d_inode->i_sb->s_id, | 1230 | req->wb_context->path.dentry->d_inode->i_sb->s_id, |