diff options
Diffstat (limited to 'fs/fs-writeback.c')
-rw-r--r-- | fs/fs-writeback.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index ab38fef1c9a1..9e46aec10d1a 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -582,7 +582,7 @@ static inline bool over_bground_thresh(void) | |||
582 | global_dirty_limits(&background_thresh, &dirty_thresh); | 582 | global_dirty_limits(&background_thresh, &dirty_thresh); |
583 | 583 | ||
584 | return (global_page_state(NR_FILE_DIRTY) + | 584 | return (global_page_state(NR_FILE_DIRTY) + |
585 | global_page_state(NR_UNSTABLE_NFS) >= background_thresh); | 585 | global_page_state(NR_UNSTABLE_NFS) > background_thresh); |
586 | } | 586 | } |
587 | 587 | ||
588 | /* | 588 | /* |
@@ -721,6 +721,10 @@ static long wb_check_old_data_flush(struct bdi_writeback *wb) | |||
721 | return 0; | 721 | return 0; |
722 | 722 | ||
723 | wb->last_old_flush = jiffies; | 723 | wb->last_old_flush = jiffies; |
724 | /* | ||
725 | * Add in the number of potentially dirty inodes, because each inode | ||
726 | * write can dirty pagecache in the underlying blockdev. | ||
727 | */ | ||
724 | nr_pages = global_page_state(NR_FILE_DIRTY) + | 728 | nr_pages = global_page_state(NR_FILE_DIRTY) + |
725 | global_page_state(NR_UNSTABLE_NFS) + | 729 | global_page_state(NR_UNSTABLE_NFS) + |
726 | (inodes_stat.nr_inodes - inodes_stat.nr_unused); | 730 | (inodes_stat.nr_inodes - inodes_stat.nr_unused); |
@@ -790,7 +794,7 @@ int bdi_writeback_thread(void *data) | |||
790 | struct backing_dev_info *bdi = wb->bdi; | 794 | struct backing_dev_info *bdi = wb->bdi; |
791 | long pages_written; | 795 | long pages_written; |
792 | 796 | ||
793 | current->flags |= PF_FLUSHER | PF_SWAPWRITE; | 797 | current->flags |= PF_SWAPWRITE; |
794 | set_freezable(); | 798 | set_freezable(); |
795 | wb->last_active = jiffies; | 799 | wb->last_active = jiffies; |
796 | 800 | ||