mm: exporting account_page_dirty
authorMichael Rubin <mrubin@google.com>
Fri, 20 Aug 2010 09:31:26 +0000 (02:31 -0700)
committerSage Weil <sage@newdream.net>
Sun, 22 Aug 2010 22:16:51 +0000 (15:16 -0700)
This allows code outside of the mm core to safely manipulate page state
and not worry about the other accounting. Not using these routines means
that some code will lose track of the accounting and we get bugs. This
has happened once already.

Signed-off-by: Michael Rubin <mrubin@google.com>
Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/addr.c
mm/page-writeback.c

index 5598a0d02295d11eaa3646e137497a083910251e..420d46974ec8a2f4866d342e7a65ea077075c503 100644 (file)
@@ -105,13 +105,7 @@ static int ceph_set_page_dirty(struct page *page)
        spin_lock_irq(&mapping->tree_lock);
        if (page->mapping) {    /* Race with truncate? */
                WARN_ON_ONCE(!PageUptodate(page));
-
-               if (mapping_cap_account_dirty(mapping)) {
-                       __inc_zone_page_state(page, NR_FILE_DIRTY);
-                       __inc_bdi_stat(mapping->backing_dev_info,
-                                       BDI_RECLAIMABLE);
-                       task_io_account_write(PAGE_CACHE_SIZE);
-               }
+               account_page_dirtied(page, page->mapping);
                radix_tree_tag_set(&mapping->page_tree,
                                page_index(page), PAGECACHE_TAG_DIRTY);
 
index 37498ef6154836943f3478304bf7440ab255669a..849d0ccbe914dafe85548a844de1786c220c2f3d 100644 (file)
@@ -1096,6 +1096,7 @@ void account_page_dirtied(struct page *page, struct address_space *mapping)
                task_io_account_write(PAGE_CACHE_SIZE);
        }
 }
+EXPORT_SYMBOL(account_page_dirtied);
 
 /*
  * For address_spaces which do not use buffers.  Just tag the page as dirty in