@@ -199,7 +199,8 @@ static const u32 ddir_act[2] = { BLK_TC_ACT(BLK_TC_READ),
199
199
* blk_io_trace structure and places it in a per-cpu subbuffer.
200
200
*/
201
201
static void __blk_add_trace (struct blk_trace * bt , sector_t sector , int bytes ,
202
- int rw , u32 what , int error , int pdu_len , void * pdu_data )
202
+ int op , int op_flags , u32 what , int error , int pdu_len ,
203
+ void * pdu_data )
203
204
{
204
205
struct task_struct * tsk = current ;
205
206
struct ring_buffer_event * event = NULL ;
@@ -214,13 +215,14 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,
214
215
if (unlikely (bt -> trace_state != Blktrace_running && !blk_tracer ))
215
216
return ;
216
217
217
- what |= ddir_act [rw & WRITE ];
218
- what |= MASK_TC_BIT (rw , SYNC );
219
- what |= MASK_TC_BIT (rw , RAHEAD );
220
- what |= MASK_TC_BIT (rw , META );
221
- what |= MASK_TC_BIT (rw , DISCARD );
222
- what |= MASK_TC_BIT (rw , FLUSH );
223
- what |= MASK_TC_BIT (rw , FUA );
218
+ what |= ddir_act [op_is_write (op ) ? WRITE : READ ];
219
+ what |= MASK_TC_BIT (op_flags , SYNC );
220
+ what |= MASK_TC_BIT (op_flags , RAHEAD );
221
+ what |= MASK_TC_BIT (op_flags , META );
222
+ what |= MASK_TC_BIT (op_flags , FLUSH );
223
+ what |= MASK_TC_BIT (op_flags , FUA );
224
+ if (op == REQ_OP_DISCARD )
225
+ what |= BLK_TC_ACT (BLK_TC_DISCARD );
224
226
225
227
pid = tsk -> pid ;
226
228
if (act_log_check (bt , what , sector , pid ))
@@ -708,11 +710,11 @@ static void blk_add_trace_rq(struct request_queue *q, struct request *rq,
708
710
709
711
if (rq -> cmd_type == REQ_TYPE_BLOCK_PC ) {
710
712
what |= BLK_TC_ACT (BLK_TC_PC );
711
- __blk_add_trace (bt , 0 , nr_bytes , rq -> cmd_flags ,
713
+ __blk_add_trace (bt , 0 , nr_bytes , req_op ( rq ), rq -> cmd_flags ,
712
714
what , rq -> errors , rq -> cmd_len , rq -> cmd );
713
715
} else {
714
716
what |= BLK_TC_ACT (BLK_TC_FS );
715
- __blk_add_trace (bt , blk_rq_pos (rq ), nr_bytes ,
717
+ __blk_add_trace (bt , blk_rq_pos (rq ), nr_bytes , req_op ( rq ),
716
718
rq -> cmd_flags , what , rq -> errors , 0 , NULL );
717
719
}
718
720
}
@@ -770,7 +772,7 @@ static void blk_add_trace_bio(struct request_queue *q, struct bio *bio,
770
772
return ;
771
773
772
774
__blk_add_trace (bt , bio -> bi_iter .bi_sector , bio -> bi_iter .bi_size ,
773
- bio -> bi_rw , what , error , 0 , NULL );
775
+ bio_op ( bio ), bio -> bi_rw , what , error , 0 , NULL );
774
776
}
775
777
776
778
static void blk_add_trace_bio_bounce (void * ignore ,
@@ -818,7 +820,8 @@ static void blk_add_trace_getrq(void *ignore,
818
820
struct blk_trace * bt = q -> blk_trace ;
819
821
820
822
if (bt )
821
- __blk_add_trace (bt , 0 , 0 , rw , BLK_TA_GETRQ , 0 , 0 , NULL );
823
+ __blk_add_trace (bt , 0 , 0 , rw , 0 , BLK_TA_GETRQ , 0 , 0 ,
824
+ NULL );
822
825
}
823
826
}
824
827
@@ -833,7 +836,7 @@ static void blk_add_trace_sleeprq(void *ignore,
833
836
struct blk_trace * bt = q -> blk_trace ;
834
837
835
838
if (bt )
836
- __blk_add_trace (bt , 0 , 0 , rw , BLK_TA_SLEEPRQ ,
839
+ __blk_add_trace (bt , 0 , 0 , rw , 0 , BLK_TA_SLEEPRQ ,
837
840
0 , 0 , NULL );
838
841
}
839
842
}
@@ -843,7 +846,7 @@ static void blk_add_trace_plug(void *ignore, struct request_queue *q)
843
846
struct blk_trace * bt = q -> blk_trace ;
844
847
845
848
if (bt )
846
- __blk_add_trace (bt , 0 , 0 , 0 , BLK_TA_PLUG , 0 , 0 , NULL );
849
+ __blk_add_trace (bt , 0 , 0 , 0 , 0 , BLK_TA_PLUG , 0 , 0 , NULL );
847
850
}
848
851
849
852
static void blk_add_trace_unplug (void * ignore , struct request_queue * q ,
@@ -860,7 +863,7 @@ static void blk_add_trace_unplug(void *ignore, struct request_queue *q,
860
863
else
861
864
what = BLK_TA_UNPLUG_TIMER ;
862
865
863
- __blk_add_trace (bt , 0 , 0 , 0 , what , 0 , sizeof (rpdu ), & rpdu );
866
+ __blk_add_trace (bt , 0 , 0 , 0 , 0 , what , 0 , sizeof (rpdu ), & rpdu );
864
867
}
865
868
}
866
869
@@ -874,8 +877,9 @@ static void blk_add_trace_split(void *ignore,
874
877
__be64 rpdu = cpu_to_be64 (pdu );
875
878
876
879
__blk_add_trace (bt , bio -> bi_iter .bi_sector ,
877
- bio -> bi_iter .bi_size , bio -> bi_rw , BLK_TA_SPLIT ,
878
- bio -> bi_error , sizeof (rpdu ), & rpdu );
880
+ bio -> bi_iter .bi_size , bio_op (bio ), bio -> bi_rw ,
881
+ BLK_TA_SPLIT , bio -> bi_error , sizeof (rpdu ),
882
+ & rpdu );
879
883
}
880
884
}
881
885
@@ -907,7 +911,7 @@ static void blk_add_trace_bio_remap(void *ignore,
907
911
r .sector_from = cpu_to_be64 (from );
908
912
909
913
__blk_add_trace (bt , bio -> bi_iter .bi_sector , bio -> bi_iter .bi_size ,
910
- bio -> bi_rw , BLK_TA_REMAP , bio -> bi_error ,
914
+ bio_op ( bio ), bio -> bi_rw , BLK_TA_REMAP , bio -> bi_error ,
911
915
sizeof (r ), & r );
912
916
}
913
917
@@ -940,7 +944,7 @@ static void blk_add_trace_rq_remap(void *ignore,
940
944
r .sector_from = cpu_to_be64 (from );
941
945
942
946
__blk_add_trace (bt , blk_rq_pos (rq ), blk_rq_bytes (rq ),
943
- rq_data_dir (rq ), BLK_TA_REMAP , !!rq -> errors ,
947
+ rq_data_dir (rq ), 0 , BLK_TA_REMAP , !!rq -> errors ,
944
948
sizeof (r ), & r );
945
949
}
946
950
@@ -965,10 +969,10 @@ void blk_add_driver_data(struct request_queue *q,
965
969
return ;
966
970
967
971
if (rq -> cmd_type == REQ_TYPE_BLOCK_PC )
968
- __blk_add_trace (bt , 0 , blk_rq_bytes (rq ), 0 ,
972
+ __blk_add_trace (bt , 0 , blk_rq_bytes (rq ), 0 , 0 ,
969
973
BLK_TA_DRV_DATA , rq -> errors , len , data );
970
974
else
971
- __blk_add_trace (bt , blk_rq_pos (rq ), blk_rq_bytes (rq ), 0 ,
975
+ __blk_add_trace (bt , blk_rq_pos (rq ), blk_rq_bytes (rq ), 0 , 0 ,
972
976
BLK_TA_DRV_DATA , rq -> errors , len , data );
973
977
}
974
978
EXPORT_SYMBOL_GPL (blk_add_driver_data );
@@ -1769,21 +1773,27 @@ void blk_dump_cmd(char *buf, struct request *rq)
1769
1773
}
1770
1774
}
1771
1775
1772
- void blk_fill_rwbs (char * rwbs , u32 rw , int bytes )
1776
+ void blk_fill_rwbs (char * rwbs , int op , u32 rw , int bytes )
1773
1777
{
1774
1778
int i = 0 ;
1775
1779
1776
1780
if (rw & REQ_FLUSH )
1777
1781
rwbs [i ++ ] = 'F' ;
1778
1782
1779
- if (rw & WRITE )
1783
+ switch (op ) {
1784
+ case REQ_OP_WRITE :
1785
+ case REQ_OP_WRITE_SAME :
1780
1786
rwbs [i ++ ] = 'W' ;
1781
- else if (rw & REQ_DISCARD )
1787
+ break ;
1788
+ case REQ_OP_DISCARD :
1782
1789
rwbs [i ++ ] = 'D' ;
1783
- else if (bytes )
1790
+ break ;
1791
+ case REQ_OP_READ :
1784
1792
rwbs [i ++ ] = 'R' ;
1785
- else
1793
+ break ;
1794
+ default :
1786
1795
rwbs [i ++ ] = 'N' ;
1796
+ }
1787
1797
1788
1798
if (rw & REQ_FUA )
1789
1799
rwbs [i ++ ] = 'F' ;
0 commit comments