aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/fs-writeback.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 2c947da39f6e..5826992910e9 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -693,6 +693,16 @@ static inline bool over_bground_thresh(void)
693} 693}
694 694
695/* 695/*
696 * Called under wb->list_lock. If there are multiple wb per bdi,
697 * only the flusher working on the first wb should do it.
698 */
699static void wb_update_bandwidth(struct bdi_writeback *wb,
700 unsigned long start_time)
701{
702 __bdi_update_bandwidth(wb->bdi, start_time);
703}
704
705/*
696 * Explicit flushing or periodic writeback of "old" data. 706 * Explicit flushing or periodic writeback of "old" data.
697 * 707 *
698 * Define "old": the first time one of an inode's pages is dirtied, we mark the 708 * Define "old": the first time one of an inode's pages is dirtied, we mark the
@@ -710,6 +720,7 @@ static inline bool over_bground_thresh(void)
710static long wb_writeback(struct bdi_writeback *wb, 720static long wb_writeback(struct bdi_writeback *wb,
711 struct wb_writeback_work *work) 721 struct wb_writeback_work *work)
712{ 722{
723 unsigned long wb_start = jiffies;
713 long nr_pages = work->nr_pages; 724 long nr_pages = work->nr_pages;
714 unsigned long oldest_jif; 725 unsigned long oldest_jif;
715 struct inode *inode; 726 struct inode *inode;
@@ -758,6 +769,8 @@ static long wb_writeback(struct bdi_writeback *wb,
758 progress = __writeback_inodes_wb(wb, work); 769 progress = __writeback_inodes_wb(wb, work);
759 trace_writeback_written(wb->bdi, work); 770 trace_writeback_written(wb->bdi, work);
760 771
772 wb_update_bandwidth(wb, wb_start);
773
761 /* 774 /*
762 * Did we write something? Try for more 775 * Did we write something? Try for more
763 * 776 *