writeback: fix dirtied pages accounting on redirty
authorWu Fengguang <fengguang.wu@intel.com>
Mon, 8 Aug 2011 21:22:00 +0000 (15:22 -0600)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 25 Apr 2013 19:25:43 +0000 (20:25 +0100)
commit40e5c2b17933a25380494548391126affae73c58
tree7dfb82319c4b1955d3b74b09fdd9050f193420cd
parent2f0500f50b8ee7b33407d74f00f5f17ac1d1473e
writeback: fix dirtied pages accounting on redirty

commit 2f800fbd777b792de54187088df19a7df0251254 upstream.

De-account the accumulative dirty counters on page redirty.

Page redirties (very common in ext4) will introduce mismatch between
counters (a) and (b)

a) NR_DIRTIED, BDI_DIRTIED, tsk->nr_dirtied
b) NR_WRITTEN, BDI_WRITTEN

This will introduce systematic errors in balanced_rate and result in
dirty page position errors (ie. the dirty pages are no longer balanced
around the global/bdi setpoints).

Acked-by: Jan Kara <jack@suse.cz>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
include/linux/writeback.h
mm/page-writeback.c