Loading block/blktrace.c +25 −15 Original line number Diff line number Diff line Loading @@ -169,7 +169,8 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, pid_t pid; int cpu, pc = 0; if (unlikely(bt->trace_state != Blktrace_running || !blk_tracer_enabled)) if (unlikely(bt->trace_state != Blktrace_running || !blk_tracer_enabled)) return; what |= ddir_act[rw & WRITE]; Loading Loading @@ -234,7 +235,7 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, if (blk_tr) { ring_buffer_unlock_commit(blk_tr->buffer, event, flags); if (pid != 0 && (blk_tracer_flags.val & TRACE_BLK_OPT_CLASSIC) == 0 && !(blk_tracer_flags.val & TRACE_BLK_OPT_CLASSIC) && (trace_flags & TRACE_ITER_STACKTRACE) != 0) __trace_stack(blk_tr, NULL, flags, 5, pc); trace_wake_up(); Loading Loading @@ -957,15 +958,23 @@ static void fill_rwbs(char *rwbs, const struct blk_io_trace *t) { int i = 0; if (t->action & BLK_TC_DISCARD) rwbs[i++] = 'D'; else if (t->action & BLK_TC_WRITE) rwbs[i++] = 'W'; else if (t->bytes) rwbs[i++] = 'R'; else rwbs[i++] = 'N'; if (t->action & BLK_TC_DISCARD) rwbs[i++] = 'D'; else if (t->action & BLK_TC_WRITE) rwbs[i++] = 'W'; else if (t->bytes) rwbs[i++] = 'R'; else rwbs[i++] = 'N'; if (t->action & BLK_TC_AHEAD) rwbs[i++] = 'A'; if (t->action & BLK_TC_BARRIER) rwbs[i++] = 'B'; if (t->action & BLK_TC_SYNC) rwbs[i++] = 'S'; if (t->action & BLK_TC_META) rwbs[i++] = 'M'; if (t->action & BLK_TC_AHEAD) rwbs[i++] = 'A'; if (t->action & BLK_TC_BARRIER) rwbs[i++] = 'B'; if (t->action & BLK_TC_SYNC) rwbs[i++] = 'S'; if (t->action & BLK_TC_META) rwbs[i++] = 'M'; rwbs[i] = '\0'; } Loading Loading @@ -1049,7 +1058,8 @@ static int blk_log_generic(struct trace_seq *s, const struct trace_entry *ent) return trace_seq_printf(s, "[%s]\n", cmd); } static int blk_log_with_error(struct trace_seq *s, const struct trace_entry *ent) static int blk_log_with_error(struct trace_seq *s, const struct trace_entry *ent) { if (t_sec(ent)) return trace_seq_printf(s, "%llu + %u [%d]\n", t_sector(ent), Loading fs/partitions/check.c +1 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/kmod.h> #include <linux/ctype.h> #include <linux/genhd.h> #include <linux/blktrace_api.h> #include "check.h" Loading Loading @@ -268,10 +269,6 @@ ssize_t part_fail_store(struct device *dev, } #endif #ifdef CONFIG_BLK_DEV_IO_TRACE extern struct attribute_group blk_trace_attr_group; #endif static DEVICE_ATTR(partition, S_IRUGO, part_partition_show, NULL); static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL); static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL); Loading include/linux/blktrace_api.h +5 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,9 @@ struct blk_user_trace_setup { #ifdef __KERNEL__ #if defined(CONFIG_BLK_DEV_IO_TRACE) #include <linux/sysfs.h> struct blk_trace { int trace_state; struct rchan *rchan; Loading Loading @@ -192,6 +195,8 @@ extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev, extern int blk_trace_startstop(struct request_queue *q, int start); extern int blk_trace_remove(struct request_queue *q); extern struct attribute_group blk_trace_attr_group; #else /* !CONFIG_BLK_DEV_IO_TRACE */ #define blk_trace_ioctl(bdev, cmd, arg) (-ENOTTY) #define blk_trace_shutdown(q) do { } while (0) Loading Loading
block/blktrace.c +25 −15 Original line number Diff line number Diff line Loading @@ -169,7 +169,8 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, pid_t pid; int cpu, pc = 0; if (unlikely(bt->trace_state != Blktrace_running || !blk_tracer_enabled)) if (unlikely(bt->trace_state != Blktrace_running || !blk_tracer_enabled)) return; what |= ddir_act[rw & WRITE]; Loading Loading @@ -234,7 +235,7 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, if (blk_tr) { ring_buffer_unlock_commit(blk_tr->buffer, event, flags); if (pid != 0 && (blk_tracer_flags.val & TRACE_BLK_OPT_CLASSIC) == 0 && !(blk_tracer_flags.val & TRACE_BLK_OPT_CLASSIC) && (trace_flags & TRACE_ITER_STACKTRACE) != 0) __trace_stack(blk_tr, NULL, flags, 5, pc); trace_wake_up(); Loading Loading @@ -957,15 +958,23 @@ static void fill_rwbs(char *rwbs, const struct blk_io_trace *t) { int i = 0; if (t->action & BLK_TC_DISCARD) rwbs[i++] = 'D'; else if (t->action & BLK_TC_WRITE) rwbs[i++] = 'W'; else if (t->bytes) rwbs[i++] = 'R'; else rwbs[i++] = 'N'; if (t->action & BLK_TC_DISCARD) rwbs[i++] = 'D'; else if (t->action & BLK_TC_WRITE) rwbs[i++] = 'W'; else if (t->bytes) rwbs[i++] = 'R'; else rwbs[i++] = 'N'; if (t->action & BLK_TC_AHEAD) rwbs[i++] = 'A'; if (t->action & BLK_TC_BARRIER) rwbs[i++] = 'B'; if (t->action & BLK_TC_SYNC) rwbs[i++] = 'S'; if (t->action & BLK_TC_META) rwbs[i++] = 'M'; if (t->action & BLK_TC_AHEAD) rwbs[i++] = 'A'; if (t->action & BLK_TC_BARRIER) rwbs[i++] = 'B'; if (t->action & BLK_TC_SYNC) rwbs[i++] = 'S'; if (t->action & BLK_TC_META) rwbs[i++] = 'M'; rwbs[i] = '\0'; } Loading Loading @@ -1049,7 +1058,8 @@ static int blk_log_generic(struct trace_seq *s, const struct trace_entry *ent) return trace_seq_printf(s, "[%s]\n", cmd); } static int blk_log_with_error(struct trace_seq *s, const struct trace_entry *ent) static int blk_log_with_error(struct trace_seq *s, const struct trace_entry *ent) { if (t_sec(ent)) return trace_seq_printf(s, "%llu + %u [%d]\n", t_sector(ent), Loading
fs/partitions/check.c +1 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/kmod.h> #include <linux/ctype.h> #include <linux/genhd.h> #include <linux/blktrace_api.h> #include "check.h" Loading Loading @@ -268,10 +269,6 @@ ssize_t part_fail_store(struct device *dev, } #endif #ifdef CONFIG_BLK_DEV_IO_TRACE extern struct attribute_group blk_trace_attr_group; #endif static DEVICE_ATTR(partition, S_IRUGO, part_partition_show, NULL); static DEVICE_ATTR(start, S_IRUGO, part_start_show, NULL); static DEVICE_ATTR(size, S_IRUGO, part_size_show, NULL); Loading
include/linux/blktrace_api.h +5 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,9 @@ struct blk_user_trace_setup { #ifdef __KERNEL__ #if defined(CONFIG_BLK_DEV_IO_TRACE) #include <linux/sysfs.h> struct blk_trace { int trace_state; struct rchan *rchan; Loading Loading @@ -192,6 +195,8 @@ extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev, extern int blk_trace_startstop(struct request_queue *q, int start); extern int blk_trace_remove(struct request_queue *q); extern struct attribute_group blk_trace_attr_group; #else /* !CONFIG_BLK_DEV_IO_TRACE */ #define blk_trace_ioctl(bdev, cmd, arg) (-ENOTTY) #define blk_trace_shutdown(q) do { } while (0) Loading