Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=69cb51d18c1ed593009d9a620cac49d0dcf15dc8
Commit:     69cb51d18c1ed593009d9a620cac49d0dcf15dc8
Parent:     c9e51e4180696aa67915ec5665e4ec74125565de
Author:     Peter Zijlstra <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 23:25:48 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Oct 17 08:42:45 2007 -0700

    mm: count writeback pages per BDI
    
    Count per BDI writeback pages.
    
    Signed-off-by: Peter Zijlstra <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 include/linux/backing-dev.h |    1 +
 mm/page-writeback.c         |   12 ++++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index bfae09d..4d9222c 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -28,6 +28,7 @@ typedef int (congested_fn)(void *, int);
 
 enum bdi_stat_item {
        BDI_RECLAIMABLE,
+       BDI_WRITEBACK,
        NR_BDI_STAT_ITEMS
 };
 
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 9b3c4ee..f1d201f 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -979,14 +979,18 @@ int test_clear_page_writeback(struct page *page)
        int ret;
 
        if (mapping) {
+               struct backing_dev_info *bdi = mapping->backing_dev_info;
                unsigned long flags;
 
                write_lock_irqsave(&mapping->tree_lock, flags);
                ret = TestClearPageWriteback(page);
-               if (ret)
+               if (ret) {
                        radix_tree_tag_clear(&mapping->page_tree,
                                                page_index(page),
                                                PAGECACHE_TAG_WRITEBACK);
+                       if (bdi_cap_writeback_dirty(bdi))
+                               __dec_bdi_stat(bdi, BDI_WRITEBACK);
+               }
                write_unlock_irqrestore(&mapping->tree_lock, flags);
        } else {
                ret = TestClearPageWriteback(page);
@@ -1002,14 +1006,18 @@ int test_set_page_writeback(struct page *page)
        int ret;
 
        if (mapping) {
+               struct backing_dev_info *bdi = mapping->backing_dev_info;
                unsigned long flags;
 
                write_lock_irqsave(&mapping->tree_lock, flags);
                ret = TestSetPageWriteback(page);
-               if (!ret)
+               if (!ret) {
                        radix_tree_tag_set(&mapping->page_tree,
                                                page_index(page),
                                                PAGECACHE_TAG_WRITEBACK);
+                       if (bdi_cap_writeback_dirty(bdi))
+                               __inc_bdi_stat(bdi, BDI_WRITEBACK);
+               }
                if (!PageDirty(page))
                        radix_tree_tag_clear(&mapping->page_tree,
                                                page_index(page),
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to