mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
mm: exporting account_page_dirty
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>
This commit is contained in:
parent
eb6bb1c5bd
commit
679ceace84
@ -105,13 +105,7 @@ static int ceph_set_page_dirty(struct page *page)
|
|||||||
spin_lock_irq(&mapping->tree_lock);
|
spin_lock_irq(&mapping->tree_lock);
|
||||||
if (page->mapping) { /* Race with truncate? */
|
if (page->mapping) { /* Race with truncate? */
|
||||||
WARN_ON_ONCE(!PageUptodate(page));
|
WARN_ON_ONCE(!PageUptodate(page));
|
||||||
|
account_page_dirtied(page, page->mapping);
|
||||||
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);
|
|
||||||
}
|
|
||||||
radix_tree_tag_set(&mapping->page_tree,
|
radix_tree_tag_set(&mapping->page_tree,
|
||||||
page_index(page), PAGECACHE_TAG_DIRTY);
|
page_index(page), PAGECACHE_TAG_DIRTY);
|
||||||
|
|
||||||
|
@ -1096,6 +1096,7 @@ void account_page_dirtied(struct page *page, struct address_space *mapping)
|
|||||||
task_io_account_write(PAGE_CACHE_SIZE);
|
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
|
* For address_spaces which do not use buffers. Just tag the page as dirty in
|
||||||
|
Loading…
Reference in New Issue
Block a user