]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
md/bitmap: add blktrace event for writes to the bitmap
authorNeilBrown <neilb@suse.com>
Mon, 14 Nov 2016 05:30:21 +0000 (16:30 +1100)
committerShaohua Li <shli@fb.com>
Fri, 18 Nov 2016 17:34:45 +0000 (09:34 -0800)
We trace wheneven bitmap_unplug() finds that it needs to write
to the bitmap, or when bitmap_daemon_work() find there is work
to do.

This makes it easier to correlate bitmap updates with data writes.

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/bitmap.c

index 1a7f402b79ba7a738234b55c2d063bb2db576641..cf77cbf9ed22b8a38104eff941ab4c53c15e3cf1 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/mount.h>
 #include <linux/buffer_head.h>
 #include <linux/seq_file.h>
+#include <trace/events/block.h>
 #include "md.h"
 #include "bitmap.h"
 
@@ -1008,8 +1009,12 @@ void bitmap_unplug(struct bitmap *bitmap)
                need_write = test_and_clear_page_attr(bitmap, i,
                                                      BITMAP_PAGE_NEEDWRITE);
                if (dirty || need_write) {
-                       if (!writing)
+                       if (!writing) {
                                bitmap_wait_writes(bitmap);
+                               if (bitmap->mddev->queue)
+                                       blk_add_trace_msg(bitmap->mddev->queue,
+                                                         "md bitmap_unplug");
+                       }
                        clear_page_attr(bitmap, i, BITMAP_PAGE_PENDING);
                        write_page(bitmap, bitmap->storage.filemap[i], 0);
                        writing = 1;
@@ -1234,6 +1239,10 @@ void bitmap_daemon_work(struct mddev *mddev)
        }
        bitmap->allclean = 1;
 
+       if (bitmap->mddev->queue)
+               blk_add_trace_msg(bitmap->mddev->queue,
+                                 "md bitmap_daemon_work");
+
        /* Any file-page which is PENDING now needs to be written.
         * So set NEEDWRITE now, then after we make any last-minute changes
         * we will write it.