Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

blktrace: change the internal action to 64bit

Change the internal use of the action in blktrace to 64bit. Although for
now only the lower 32bits will be used.

With the upcoming version 2 of the blktrace user-space protocol the upper
32bit will also be utilized.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Johannes Thumshirn and committed by
Jens Axboe
370cd70a 70e3c62b

+19 -19
+19 -19
kernel/trace/blktrace.c
··· 64 64 static void blk_unregister_tracepoints(void); 65 65 66 66 static void record_blktrace_event(struct blk_io_trace *t, pid_t pid, int cpu, 67 - sector_t sector, int bytes, u32 what, 67 + sector_t sector, int bytes, u64 what, 68 68 dev_t dev, int error, u64 cgid, 69 69 ssize_t cgid_len, void *pdu_data, int pdu_len) 70 70 ··· 80 80 81 81 t->sector = sector; 82 82 t->bytes = bytes; 83 - t->action = what; 83 + t->action = lower_32_bits(what); 84 84 t->device = dev; 85 85 t->error = error; 86 86 t->pdu_len = pdu_len + cgid_len; ··· 93 93 94 94 static void relay_blktrace_event(struct blk_trace *bt, unsigned long sequence, 95 95 pid_t pid, int cpu, sector_t sector, int bytes, 96 - u32 what, int error, u64 cgid, 96 + u64 what, int error, u64 cgid, 97 97 ssize_t cgid_len, void *pdu_data, int pdu_len) 98 98 { 99 99 struct blk_io_trace *t; ··· 114 114 /* 115 115 * Send out a notify message. 116 116 */ 117 - static void trace_note(struct blk_trace *bt, pid_t pid, int action, 117 + static void trace_note(struct blk_trace *bt, pid_t pid, u64 action, 118 118 const void *data, size_t len, u64 cgid) 119 119 { 120 120 struct blk_io_trace *t; ··· 127 127 size_t trace_len; 128 128 129 129 trace_len = sizeof(*t) + cgid_len + len; 130 + action = lower_32_bits(action | (cgid ? __BLK_TN_CGROUP : 0)); 130 131 if (blk_tracer) { 131 132 buffer = blk_tr->array_buffer.buffer; 132 133 trace_ctx = tracing_gen_ctx_flags(0); ··· 137 136 return; 138 137 t = ring_buffer_event_data(event); 139 138 record_blktrace_event(t, pid, cpu, 0, 0, 140 - action | (cgid ? __BLK_TN_CGROUP : 0), 141 - bt->dev, 0, cgid, cgid_len, (void *)data, 142 - len); 139 + action, bt->dev, 0, cgid, cgid_len, 140 + (void *)data, len); 143 141 trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); 144 142 return; 145 143 } ··· 146 146 if (!bt->rchan) 147 147 return; 148 148 149 - relay_blktrace_event(bt, 0, pid, cpu, 0, 0, 150 - action | (cgid ? __BLK_TN_CGROUP : 0), 0, cgid, 149 + relay_blktrace_event(bt, 0, pid, cpu, 0, 0, action, 0, cgid, 151 150 cgid_len, (void *)data, len); 152 151 } 153 152 ··· 221 222 } 222 223 EXPORT_SYMBOL_GPL(__blk_trace_note_message); 223 224 224 - static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector, 225 + static int act_log_check(struct blk_trace *bt, u64 what, sector_t sector, 225 226 pid_t pid) 226 227 { 227 228 if (((bt->act_mask << BLK_TC_SHIFT) & what) == 0) ··· 252 253 * blk_io_trace structure and places it in a per-cpu subbuffer. 253 254 */ 254 255 static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, 255 - const blk_opf_t opf, u32 what, int error, 256 + const blk_opf_t opf, u64 what, int error, 256 257 int pdu_len, void *pdu_data, u64 cgid) 257 258 { 258 259 struct task_struct *tsk = current; ··· 310 311 return; 311 312 312 313 record_blktrace_event(ring_buffer_event_data(event), 313 - pid, cpu, sector, bytes, what, bt->dev, 314 - error, cgid, cgid_len, pdu_data, 315 - pdu_len); 314 + pid, cpu, sector, bytes, 315 + what, bt->dev, error, cgid, cgid_len, 316 + pdu_data, pdu_len); 316 317 317 318 trace_buffer_unlock_commit(blk_tr, buffer, event, trace_ctx); 318 319 return; ··· 329 330 local_irq_save(flags); 330 331 sequence = per_cpu_ptr(bt->sequence, cpu); 331 332 (*sequence)++; 332 - relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, what, 333 - error, cgid, cgid_len, pdu_data, pdu_len); 333 + relay_blktrace_event(bt, *sequence, pid, cpu, sector, bytes, 334 + lower_32_bits(what), error, cgid, cgid_len, 335 + pdu_data, pdu_len); 334 336 local_irq_restore(flags); 335 337 } 336 338 ··· 818 818 * 819 819 **/ 820 820 static void blk_add_trace_rq(struct request *rq, blk_status_t error, 821 - unsigned int nr_bytes, u32 what, u64 cgid) 821 + unsigned int nr_bytes, u64 what, u64 cgid) 822 822 { 823 823 struct blk_trace *bt; 824 824 ··· 882 882 * 883 883 **/ 884 884 static void blk_add_trace_bio(struct request_queue *q, struct bio *bio, 885 - u32 what, int error) 885 + u64 what, int error) 886 886 { 887 887 struct blk_trace *bt; 888 888 ··· 948 948 bt = rcu_dereference(q->blk_trace); 949 949 if (bt) { 950 950 __be64 rpdu = cpu_to_be64(depth); 951 - u32 what; 951 + u64 what; 952 952 953 953 if (explicit) 954 954 what = BLK_TA_UNPLUG_IO;