summaryrefslogtreecommitdiffstats
path: root/mm/page-writeback.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2015-05-22 18:23:31 -0400
committerJens Axboe <axboe@fb.com>2015-06-02 08:38:13 -0600
commitaa661bbe1e61ce80ca4ae98804f673ede94b0827 (patch)
tree43103c366edc05bb598c042ec7afa31fb9106939 /mm/page-writeback.c
parent9fc3a43e1757ab6de0e8ce83b5d5a83083174e3b (diff)
downloadop-kernel-dev-aa661bbe1e61ce80ca4ae98804f673ede94b0827.zip
op-kernel-dev-aa661bbe1e61ce80ca4ae98804f673ede94b0827.tar.gz
writeback: move over_bground_thresh() to mm/page-writeback.c
and rename it to wb_over_bg_thresh(). The function is closely tied to the dirty throttling mechanism implemented in page-writeback.c. This relocation will allow future updates necessary for cgroup writeback support. While at it, add function comment. This is pure reorganization and doesn't introduce any behavioral changes. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk> Cc: Jan Kara <jack@suse.cz> Cc: Wu Fengguang <fengguang.wu@intel.com> Cc: Greg Thelen <gthelen@google.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r--mm/page-writeback.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index c8ac8ce..9d9a896 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1740,6 +1740,29 @@ void balance_dirty_pages_ratelimited(struct address_space *mapping)
}
EXPORT_SYMBOL(balance_dirty_pages_ratelimited);
+/**
+ * wb_over_bg_thresh - does @wb need to be written back?
+ * @wb: bdi_writeback of interest
+ *
+ * Determines whether background writeback should keep writing @wb or it's
+ * clean enough. Returns %true if writeback should continue.
+ */
+bool wb_over_bg_thresh(struct bdi_writeback *wb)
+{
+ unsigned long background_thresh, dirty_thresh;
+
+ global_dirty_limits(&background_thresh, &dirty_thresh);
+
+ if (global_page_state(NR_FILE_DIRTY) +
+ global_page_state(NR_UNSTABLE_NFS) > background_thresh)
+ return true;
+
+ if (wb_stat(wb, WB_RECLAIMABLE) > wb_calc_thresh(wb, background_thresh))
+ return true;
+
+ return false;
+}
+
void throttle_vm_writeout(gfp_t gfp_mask)
{
unsigned long background_thresh;
OpenPOWER on IntegriCloud