The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at 
https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-123.1.2.vz7.5.1
------>
commit 3ebe6f8f4178ebf89b3aff5b064657e1e9615dce
Author: Andrey Smetanin <asmeta...@virtuozzo.com>
Date:   Tue May 19 08:27:11 2015 +0400

    ploop: notify blktrace about bio completions
    
    Signed-off-by: Andrey Smetanin <asmeta...@virtuozzo.com>
---
 drivers/block/ploop/dev.c      | 14 ++++++++------
 drivers/block/ploop/freeblks.c |  4 +++-
 include/linux/ploop/compat.h   |  6 +++++-
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c
index 225c2ab..e2ff0aa 100644
--- a/drivers/block/ploop/dev.c
+++ b/drivers/block/ploop/dev.c
@@ -13,6 +13,8 @@
 #include <linux/ve.h>
 #include <asm/uaccess.h>
 
+#include <trace/events/block.h>
+
 #include <linux/ploop/ploop.h>
 #include "ploop_events.h"
 #include "freeblks.h"
@@ -518,7 +520,7 @@ ploop_bio_queue(struct ploop_device * plo, struct bio * bio,
                                bio->bi_bdev = plo->bdev;
                                clear_bit(BIO_BDEV_REUSED, &bio->bi_flags);
                        }
-                       BIO_ENDIO(bio, err);
+                       BIO_ENDIO(plo->queue, bio, err);
                        list_add(&preq->list, &plo->free_list);
                        plo->bio_qlen--;
                        plo->bio_discard_qlen--;
@@ -591,7 +593,7 @@ DEFINE_BIO_CB(ploop_fast_end_io)
 
        plo = orig->bi_bdev->bd_disk->private_data;
 
-       BIO_ENDIO(orig, err);
+       BIO_ENDIO(plo->queue, orig, err);
 
        /* End of fast bio wakes up main process only when this could
         * mean exit from ATTENTION state.
@@ -800,13 +802,13 @@ static void ploop_make_request(struct request_queue *q, 
struct bio *bio)
                 * marked as FLUSH, otherwise just warn and complete. */
                if (!(bio->bi_rw & REQ_FLUSH)) {
                        WARN_ON(1);
-                       BIO_ENDIO(bio, 0);
+                       BIO_ENDIO(q, bio, 0);
                        return;
                }
                /* useless to pass this bio further */
                if (!plo->tune.pass_flushes) {
                        ploop_acc_ff_in(plo, bio->bi_rw);
-                       BIO_ENDIO(bio, 0);
+                       BIO_ENDIO(q, bio, 0);
                        return;
                }
        }
@@ -862,7 +864,7 @@ static void ploop_make_request(struct request_queue *q, 
struct bio *bio)
                plo->bio_total--;
                spin_unlock_irq(&plo->lock);
 
-               BIO_ENDIO(bio, -EIO);
+               BIO_ENDIO(q, bio, -EIO);
                if (nbio)
                        bio_put(nbio);
                return;
@@ -1208,7 +1210,7 @@ static void ploop_complete_request(struct ploop_request * 
preq)
                struct bio * bio = preq->bl.head;
                preq->bl.head = bio->bi_next;
                bio->bi_next = NULL;
-               BIO_ENDIO(bio, preq->error);
+               BIO_ENDIO(plo->queue, bio, preq->error);
                nr_completed++;
        }
        preq->bl.tail = NULL;
diff --git a/drivers/block/ploop/freeblks.c b/drivers/block/ploop/freeblks.c
index 569cb94..cf48d3a 100644
--- a/drivers/block/ploop/freeblks.c
+++ b/drivers/block/ploop/freeblks.c
@@ -8,6 +8,8 @@
 #include <linux/buffer_head.h>
 #include <linux/kthread.h>
 
+#include <trace/events/block.h>
+
 #include <linux/ploop/ploop.h>
 #include "freeblks.h"
 
@@ -700,7 +702,7 @@ static void fbd_complete_bio(struct ploop_freeblks_desc 
*fbd, int err)
                struct bio * bio = fbd->fbd_dbl.head;
                fbd->fbd_dbl.head = bio->bi_next;
                bio->bi_next = NULL;
-               BIO_ENDIO(bio, err);
+               BIO_ENDIO(fbd->plo->queue, bio, err);
                nr_completed++;
        }
        fbd->fbd_dbl.tail = NULL;
diff --git a/include/linux/ploop/compat.h b/include/linux/ploop/compat.h
index ace8ec1..03c3ae3 100644
--- a/include/linux/ploop/compat.h
+++ b/include/linux/ploop/compat.h
@@ -44,7 +44,11 @@ static void func(struct bio *bio, int err) {
 
 #define END_BIO_CB(func)  }
 
-#define BIO_ENDIO(_bio, _err)  bio_endio(_bio, _err)
+#define BIO_ENDIO(_queue, _bio, _err)                                  \
+       do {                                                            \
+               trace_block_bio_complete((_queue), (_bio), (_err));     \
+               bio_endio((_bio), (_err));                              \
+       } while (0);
 
 #define F_DENTRY(file) (file)->f_path.dentry
 #define F_MNT(file)    (file)->f_path.mnt
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to