Skip to content

Commit 9c43a1c

Browse files
committed
vmstat: Workaround for issue where dirty page count goes negative
See: #617 http://www.spinics.net/lists/linux-mm/msg72236.html
1 parent 407bf6d commit 9c43a1c

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

include/linux/vmstat.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,11 @@ static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
241241
static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
242242
{
243243
atomic_long_dec(&zone->vm_stat[item]);
244+
if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0))
245+
atomic_long_set(&zone->vm_stat[item], 0);
244246
atomic_long_dec(&vm_stat[item]);
247+
if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0))
248+
atomic_long_set(&vm_stat[item], 0);
245249
}
246250

247251
static inline void __inc_zone_page_state(struct page *page,

0 commit comments

Comments
 (0)