#endif
 
-#if defined(CONFIG_EVENT_TRACING) && defined(CONFIG_BLOCK)
+extern void blk_fill_rwbs(char *rwbs, unsigned int op, int bytes);
 
-static inline int blk_cmd_buf_len(struct request *rq)
+static inline sector_t blk_rq_trace_sector(struct request *rq)
 {
-       return (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? rq->cmd_len * 3 : 1;
+       return (rq->cmd_type != REQ_TYPE_FS) ? 0 : blk_rq_pos(rq);
 }
 
-extern void blk_dump_cmd(char *buf, struct request *rq);
-extern void blk_fill_rwbs(char *rwbs, unsigned int op, int bytes);
-
-#endif /* CONFIG_EVENT_TRACING && CONFIG_BLOCK */
+static inline unsigned int blk_rq_trace_nr_sectors(struct request *rq)
+{
+       return (rq->cmd_type != REQ_TYPE_FS) ? 0 : blk_rq_sectors(rq);
+}
 
 #endif
 
                __field(  unsigned int, nr_sector               )
                __field(  int,          errors                  )
                __array(  char,         rwbs,   RWBS_LEN        )
-               __dynamic_array( char,  cmd,    blk_cmd_buf_len(rq)     )
+               __dynamic_array( char,  cmd,    1               )
        ),
 
        TP_fast_assign(
                __entry->dev       = rq->rq_disk ? disk_devt(rq->rq_disk) : 0;
-               __entry->sector    = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-                                       0 : blk_rq_pos(rq);
-               __entry->nr_sector = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-                                       0 : blk_rq_sectors(rq);
+               __entry->sector    = blk_rq_trace_sector(rq);
+               __entry->nr_sector = blk_rq_trace_nr_sectors(rq);
                __entry->errors    = rq->errors;
 
                blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq));
-               blk_dump_cmd(__get_str(cmd), rq);
+               __get_str(cmd)[0] = '\0';
        ),
 
        TP_printk("%d,%d %s (%s) %llu + %u [%d]",
                __field(  unsigned int, nr_sector               )
                __field(  int,          errors                  )
                __array(  char,         rwbs,   RWBS_LEN        )
-               __dynamic_array( char,  cmd,    blk_cmd_buf_len(rq)     )
+               __dynamic_array( char,  cmd,    1               )
        ),
 
        TP_fast_assign(
                __entry->errors    = rq->errors;
 
                blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, nr_bytes);
-               blk_dump_cmd(__get_str(cmd), rq);
+               __get_str(cmd)[0] = '\0';
        ),
 
        TP_printk("%d,%d %s (%s) %llu + %u [%d]",
                __field(  unsigned int, bytes                   )
                __array(  char,         rwbs,   RWBS_LEN        )
                __array(  char,         comm,   TASK_COMM_LEN   )
-               __dynamic_array( char,  cmd,    blk_cmd_buf_len(rq)     )
+               __dynamic_array( char,  cmd,    1               )
        ),
 
        TP_fast_assign(
                __entry->dev       = rq->rq_disk ? disk_devt(rq->rq_disk) : 0;
-               __entry->sector    = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-                                       0 : blk_rq_pos(rq);
-               __entry->nr_sector = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-                                       0 : blk_rq_sectors(rq);
-               __entry->bytes     = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
-                                       blk_rq_bytes(rq) : 0;
+               __entry->sector    = blk_rq_trace_sector(rq);
+               __entry->nr_sector = blk_rq_trace_nr_sectors(rq);
+               __entry->bytes     = blk_rq_bytes(rq);
 
                blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq));
-               blk_dump_cmd(__get_str(cmd), rq);
+               __get_str(cmd)[0] = '\0';
                memcpy(__entry->comm, current->comm, TASK_COMM_LEN);
        ),
 
 
        if (likely(!bt))
                return;
 
-       if (rq->cmd_type == REQ_TYPE_BLOCK_PC) {
+       if (rq->cmd_type != REQ_TYPE_FS)
                what |= BLK_TC_ACT(BLK_TC_PC);
-               __blk_add_trace(bt, 0, nr_bytes, req_op(rq), rq->cmd_flags,
-                               what, rq->errors, rq->cmd_len, rq->cmd);
-       } else  {
+       else
                what |= BLK_TC_ACT(BLK_TC_FS);
-               __blk_add_trace(bt, blk_rq_pos(rq), nr_bytes, req_op(rq),
-                               rq->cmd_flags, what, rq->errors, 0, NULL);
-       }
+
+       __blk_add_trace(bt, blk_rq_trace_sector(rq), nr_bytes, req_op(rq),
+                       rq->cmd_flags, what, rq->errors, 0, NULL);
 }
 
 static void blk_add_trace_rq_abort(void *ignore,
        if (likely(!bt))
                return;
 
-       if (rq->cmd_type == REQ_TYPE_BLOCK_PC)
-               __blk_add_trace(bt, 0, blk_rq_bytes(rq), 0, 0,
-                               BLK_TA_DRV_DATA, rq->errors, len, data);
-       else
-               __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0, 0,
+       __blk_add_trace(bt, blk_rq_trace_sector(rq), blk_rq_bytes(rq), 0, 0,
                                BLK_TA_DRV_DATA, rq->errors, len, data);
 }
 EXPORT_SYMBOL_GPL(blk_add_driver_data);
 
 #ifdef CONFIG_EVENT_TRACING
 
-void blk_dump_cmd(char *buf, struct request *rq)
-{
-       int i, end;
-       int len = rq->cmd_len;
-       unsigned char *cmd = rq->cmd;
-
-       if (rq->cmd_type != REQ_TYPE_BLOCK_PC) {
-               buf[0] = '\0';
-               return;
-       }
-
-       for (end = len - 1; end >= 0; end--)
-               if (cmd[end])
-                       break;
-       end++;
-
-       for (i = 0; i < len; i++) {
-               buf += sprintf(buf, "%s%02x", i == 0 ? "" : " ", cmd[i]);
-               if (i == end && end != len - 1) {
-                       sprintf(buf, " ..");
-                       break;
-               }
-       }
-}
-
 void blk_fill_rwbs(char *rwbs, unsigned int op, int bytes)
 {
        int i = 0;