]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.arch/s390-01-04-fcpperf-2.patch
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-01-04-fcpperf-2.patch
diff --git a/src/patches/suse-2.6.27.31/patches.arch/s390-01-04-fcpperf-2.patch b/src/patches/suse-2.6.27.31/patches.arch/s390-01-04-fcpperf-2.patch
new file mode 100644 (file)
index 0000000..5fd4565
--- /dev/null
@@ -0,0 +1,85 @@
+From: Gerald Schaefer <geraldsc@de.ibm.com>
+Subject:     (kernel):FCP - Performance Data colletion & analysis
+References:  bnc#417243
+
+This patch adds the new api call blk_add_driver_data() to blktrace.
+It allows to trace device driver-specific binary data.
+
+Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
+Signed-off-by: Martin Peschke <mp3@de.ibm.com>
+
+Acked-by: John Jolly <jjolly@suse.de>
+
+---
+ include/linux/blktrace_api.h |   32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+--- a/include/linux/blktrace_api.h
++++ b/include/linux/blktrace_api.h
+@@ -23,6 +23,7 @@ enum blktrace_cat {
+       BLK_TC_NOTIFY   = 1 << 10,      /* special message */
+       BLK_TC_AHEAD    = 1 << 11,      /* readahead */
+       BLK_TC_META     = 1 << 12,      /* metadata */
++      BLK_TC_DRV_DATA = 1 << 13,      /* binary per-driver data */
+       BLK_TC_END      = 1 << 15,      /* only 16-bits, reminder */
+ };
+@@ -49,6 +50,7 @@ enum blktrace_act {
+       __BLK_TA_SPLIT,                 /* bio was split */
+       __BLK_TA_BOUNCE,                /* bio was bounced */
+       __BLK_TA_REMAP,                 /* bio was remapped */
++      __BLK_TA_DRV_DATA,              /* driver-specific binary data */
+ };
+ /*
+@@ -79,6 +81,7 @@ enum blktrace_notify {
+ #define BLK_TA_SPLIT          (__BLK_TA_SPLIT)
+ #define BLK_TA_BOUNCE         (__BLK_TA_BOUNCE)
+ #define BLK_TA_REMAP          (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
++#define BLK_TA_DRV_DATA       (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
+ #define BLK_TN_PROCESS                (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
+ #define BLK_TN_TIMESTAMP      (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
+@@ -313,6 +316,34 @@ static inline void blk_add_trace_remap(s
+       __blk_add_trace(bt, from, bio->bi_size, bio->bi_rw, BLK_TA_REMAP, !bio_flagged(bio, BIO_UPTODATE), sizeof(r), &r);
+ }
++/**
++ * blk_add_driver_data - Add binary message with driver-specific data
++ * @q:                queue the io is for
++ * @rq:               io request
++ * @data:     driver-specific data
++ * @len:      length of driver-specific data
++ *
++ * Description:
++ *     Some drivers might want to write driver-specific data per request.
++ *
++ **/
++static inline void blk_add_driver_data(struct request_queue *q,
++                                     struct request *rq,
++                                     void *data, size_t len)
++{
++      struct blk_trace *bt = q->blk_trace;
++
++      if (likely(!bt))
++              return;
++
++      if (blk_pc_request(rq))
++              __blk_add_trace(bt, 0, rq->data_len, 0, BLK_TA_DRV_DATA,
++                              rq->errors, len, data);
++      else
++              __blk_add_trace(bt, rq->hard_sector, rq->hard_nr_sectors << 9,
++                              0, BLK_TA_DRV_DATA, rq->errors, len, data);
++}
++
+ extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
+                          char __user *arg);
+ extern int blk_trace_startstop(struct request_queue *q, int start);
+@@ -326,6 +357,7 @@ extern int blk_trace_remove(struct reque
+ #define blk_add_trace_generic(q, rq, rw, what)        do { } while (0)
+ #define blk_add_trace_pdu_int(q, what, bio, pdu)      do { } while (0)
+ #define blk_add_trace_remap(q, bio, dev, f, t)        do {} while (0)
++#define blk_add_driver_data(q, rq, data, len) do {} while (0)
+ #define do_blk_trace_setup(q, name, dev, buts)        (-ENOTTY)
+ #define blk_trace_setup(q, name, dev, arg)    (-ENOTTY)
+ #define blk_trace_startstop(q, start)         (-ENOTTY)