summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-01-11 22:06:37 +0100
committerJens Axboe <axboe@kernel.dk>2013-01-14 15:00:36 +0100
commit9fb0a7da0c528d9bd49b597aa63b1fe2216c7203 (patch)
tree146b065709010fd41f4a48e8a494b65b965fc0e8 /mm
parentblock: add block_{touch|dirty}_buffer tracepoint (diff)
downloadlinux-9fb0a7da0c528d9bd49b597aa63b1fe2216c7203.tar.xz
linux-9fb0a7da0c528d9bd49b597aa63b1fe2216c7203.zip
writeback: add more tracepoints
Add tracepoints for page dirtying, writeback_single_inode start, inode dirtying and writeback. For the latter two inode events, a pair of events are defined to denote start and end of the operations (the starting one has _start suffix and the one w/o suffix happens after the operation is complete). These inode ops are FS specific and can be non-trivial and having enclosing tracepoints is useful for external tracers. This is part of tracepoint additions to improve visiblity into dirtying / writeback operations for io tracer and userland. v2: writeback_dirty_inode[_start] TPs may be called for files on pseudo FSes w/ unregistered bdi. Check whether bdi->dev is %NULL before dereferencing. v3: buffer dirtying moved to a block TP. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'mm')
-rw-r--r--mm/page-writeback.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 0713bfbf0954..3734cefd4de4 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1982,6 +1982,8 @@ int __set_page_dirty_no_writeback(struct page *page)
*/
void account_page_dirtied(struct page *page, struct address_space *mapping)
{
+ trace_writeback_dirty_page(page, mapping);
+
if (mapping_cap_account_dirty(mapping)) {
__inc_zone_page_state(page, NR_FILE_DIRTY);
__inc_zone_page_state(page, NR_DIRTIED);