]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mm-trace-filemap-add-and-del-v2
authorRobert Jarzmik <robert.jarzmik@free.fr>
Tue, 26 Mar 2013 23:24:16 +0000 (10:24 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 2 Apr 2013 07:28:56 +0000 (18:28 +1100)
 - took Stephen's comment into account (use FTrace templates)
 - took Andrew's comment into account (trace out of lock)

Cc: Dave Chinner <david@fromorbit.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/filemap.h
mm/filemap.c

index 2d363867231103e2d799d595e76e8d0d978d5453..0421f49a20f7a2af50ca0ab7e7280455d1871367 100644 (file)
@@ -11,7 +11,7 @@
 #include <linux/device.h>
 #include <linux/kdev_t.h>
 
-TRACE_EVENT(mm_filemap_delete_from_page_cache,
+DECLARE_EVENT_CLASS(mm_filemap_op_page_cache,
 
        TP_PROTO(struct page *page),
 
@@ -42,36 +42,15 @@ TRACE_EVENT(mm_filemap_delete_from_page_cache,
                __entry->index << PAGE_SHIFT)
 );
 
-TRACE_EVENT(mm_filemap_add_to_page_cache,
-
+DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_delete_from_page_cache,
        TP_PROTO(struct page *page),
+       TP_ARGS(page)
+       );
 
-       TP_ARGS(page),
-
-       TP_STRUCT__entry(
-               __field(struct page *, page)
-               __field(unsigned long, i_ino)
-               __field(unsigned long, index)
-               __field(dev_t, s_dev)
-       ),
-
-       TP_fast_assign(
-               __entry->page = page;
-               __entry->i_ino = page->mapping->host->i_ino;
-               __entry->index = page->index;
-               if (page->mapping->host->i_sb)
-                       __entry->s_dev = page->mapping->host->i_sb->s_dev;
-               else
-                       __entry->s_dev = page->mapping->host->i_rdev;
-       ),
-
-       TP_printk("dev %d:%d ino %lx page=%p pfn=%lu ofs=%lu",
-               MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
-               __entry->i_ino,
-               __entry->page,
-               page_to_pfn(__entry->page),
-               __entry->index << PAGE_SHIFT)
-);
+DEFINE_EVENT(mm_filemap_op_page_cache, mm_filemap_add_to_page_cache,
+       TP_PROTO(struct page *page),
+       TP_ARGS(page)
+       );
 
 #endif /* _TRACE_FILEMAP_H */
 
index 4284b0f9e6a8583858e1baae8d07872510d8f5d5..4ebaf95eb583e421222dd876c485a8b6e18061d9 100644 (file)
@@ -467,8 +467,8 @@ int add_to_page_cache_locked(struct page *page, struct address_space *mapping,
                if (likely(!error)) {
                        mapping->nrpages++;
                        __inc_zone_page_state(page, NR_FILE_PAGES);
-                       trace_mm_filemap_add_to_page_cache(page);
                        spin_unlock_irq(&mapping->tree_lock);
+                       trace_mm_filemap_add_to_page_cache(page);
                } else {
                        page->mapping = NULL;
                        /* Leave page->index set: truncation relies upon it */