]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.arch/s390-01-04-fcpperf-2.patch
Changed checkfs to auto reboot after correctable fsck fixes.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-01-04-fcpperf-2.patch
1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: (kernel):FCP - Performance Data colletion & analysis
3 References: bnc#417243
4
5 This patch adds the new api call blk_add_driver_data() to blktrace.
6 It allows to trace device driver-specific binary data.
7
8 Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
9 Signed-off-by: Martin Peschke <mp3@de.ibm.com>
10
11 Acked-by: John Jolly <jjolly@suse.de>
12
13 ---
14 include/linux/blktrace_api.h | 32 ++++++++++++++++++++++++++++++++
15 1 file changed, 32 insertions(+)
16
17 --- a/include/linux/blktrace_api.h
18 +++ b/include/linux/blktrace_api.h
19 @@ -23,6 +23,7 @@ enum blktrace_cat {
20 BLK_TC_NOTIFY = 1 << 10, /* special message */
21 BLK_TC_AHEAD = 1 << 11, /* readahead */
22 BLK_TC_META = 1 << 12, /* metadata */
23 + BLK_TC_DRV_DATA = 1 << 13, /* binary per-driver data */
24
25 BLK_TC_END = 1 << 15, /* only 16-bits, reminder */
26 };
27 @@ -49,6 +50,7 @@ enum blktrace_act {
28 __BLK_TA_SPLIT, /* bio was split */
29 __BLK_TA_BOUNCE, /* bio was bounced */
30 __BLK_TA_REMAP, /* bio was remapped */
31 + __BLK_TA_DRV_DATA, /* driver-specific binary data */
32 };
33
34 /*
35 @@ -79,6 +81,7 @@ enum blktrace_notify {
36 #define BLK_TA_SPLIT (__BLK_TA_SPLIT)
37 #define BLK_TA_BOUNCE (__BLK_TA_BOUNCE)
38 #define BLK_TA_REMAP (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
39 +#define BLK_TA_DRV_DATA (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
40
41 #define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
42 #define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
43 @@ -313,6 +316,34 @@ static inline void blk_add_trace_remap(s
44 __blk_add_trace(bt, from, bio->bi_size, bio->bi_rw, BLK_TA_REMAP, !bio_flagged(bio, BIO_UPTODATE), sizeof(r), &r);
45 }
46
47 +/**
48 + * blk_add_driver_data - Add binary message with driver-specific data
49 + * @q: queue the io is for
50 + * @rq: io request
51 + * @data: driver-specific data
52 + * @len: length of driver-specific data
53 + *
54 + * Description:
55 + * Some drivers might want to write driver-specific data per request.
56 + *
57 + **/
58 +static inline void blk_add_driver_data(struct request_queue *q,
59 + struct request *rq,
60 + void *data, size_t len)
61 +{
62 + struct blk_trace *bt = q->blk_trace;
63 +
64 + if (likely(!bt))
65 + return;
66 +
67 + if (blk_pc_request(rq))
68 + __blk_add_trace(bt, 0, rq->data_len, 0, BLK_TA_DRV_DATA,
69 + rq->errors, len, data);
70 + else
71 + __blk_add_trace(bt, rq->hard_sector, rq->hard_nr_sectors << 9,
72 + 0, BLK_TA_DRV_DATA, rq->errors, len, data);
73 +}
74 +
75 extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
76 char __user *arg);
77 extern int blk_trace_startstop(struct request_queue *q, int start);
78 @@ -326,6 +357,7 @@ extern int blk_trace_remove(struct reque
79 #define blk_add_trace_generic(q, rq, rw, what) do { } while (0)
80 #define blk_add_trace_pdu_int(q, what, bio, pdu) do { } while (0)
81 #define blk_add_trace_remap(q, bio, dev, f, t) do {} while (0)
82 +#define blk_add_driver_data(q, rq, data, len) do {} while (0)
83 #define do_blk_trace_setup(q, name, dev, buts) (-ENOTTY)
84 #define blk_trace_setup(q, name, dev, arg) (-ENOTTY)
85 #define blk_trace_startstop(q, start) (-ENOTTY)