From de30840b98e508ea9d650570686e35b1a64c900c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Jun 2014 13:42:01 +0100 Subject: [PATCH 044/114] vmstat: Workaround for issue where dirty page count goes negative See: https://github.com/raspberrypi/linux/issues/617 http://www.spinics.net/lists/linux-mm/msg72236.html --- include/linux/vmstat.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 82e7db7..f87d16d 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -241,7 +241,11 @@ static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) { atomic_long_dec(&zone->vm_stat[item]); + if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0)) + atomic_long_set(&zone->vm_stat[item], 0); atomic_long_dec(&vm_stat[item]); + if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0)) + atomic_long_set(&vm_stat[item], 0); } static inline void __inc_zone_page_state(struct page *page, -- 1.8.3.2