Hello Dave, The following kernel commit changes the member "rq" to member "root_rl" in the request_queue structure: commit a051661ca6d134c18599498b185b667859d4339b Author: Tejun Heo <tj@xxxxxxxxxx> Date: Tue Jun 26 15:05:44 2012 -0700 blkcg: implement per-blkg request allocation - struct request_list rq; + struct request_list root_rl; This breaks the "dev -d" crash command: crash> dev -d MAJOR GENDISK NAME REQUEST QUEUE TOTAL ASYNC SYNC DRV dev: invalid structure member offset: request_queue_rq FILE: dev.c LINE: 3807 FUNCTION: get_diskio_1() 80116438: OFFSET_verify+96 800f55da: get_diskio_1+62 800f5c52: display_all_diskio+1318 8006ff1c: exec_command+972 dev: invalid structure member offset: request_queue_rq FILE: dev.c LINE: 3807 FUNCTION: get_diskio_1() The following fix just uses "root_rl" instead of "rq". Not completely sure, if this is sufficient. With the fix on my s390 system I get: crash> dev -d MAJOR GENDISK NAME REQUEST QUEUE TOTAL ASYNC SYNC DRV 94 0x1ea144a8 dasda 0x1ebcc2b8 0 0 0 0 9 0x1e93d9c8 md0 0x1ebcb560 0 0 0 0 --- dev.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/dev.c +++ b/dev.c @@ -4050,7 +4050,11 @@ void diskio_init(void) MEMBER_OFFSET_INIT(request_list_count, "request_list", "count"); MEMBER_OFFSET_INIT(request_queue_in_flight, "request_queue", "in_flight"); - MEMBER_OFFSET_INIT(request_queue_rq, "request_queue", "rq"); + if (MEMBER_EXISTS("request_queue", "rq")) + MEMBER_OFFSET_INIT(request_queue_rq, "request_queue", "rq"); + else + MEMBER_OFFSET_INIT(request_queue_rq, + "request_queue", "root_rl"); MEMBER_OFFSET_INIT(subsys_private_klist_devices, "subsys_private", "klist_devices"); MEMBER_OFFSET_INIT(subsystem_kset, "subsystem", "kset");
[PATH] crash: Fix "dev -d" for recent kernels The following kernel commit changes the member "rq" to member "root_rl" in the request_queue structure: commit a051661ca6d134c18599498b185b667859d4339b Author: Tejun Heo <tj@xxxxxxxxxx> Date: Tue Jun 26 15:05:44 2012 -0700 blkcg: implement per-blkg request allocation - struct request_list rq; + struct request_list root_rl; This breaks the "dev -d" crash command: crash> dev -d MAJOR GENDISK NAME REQUEST QUEUE TOTAL ASYNC SYNC DRV dev: invalid structure member offset: request_queue_rq FILE: dev.c LINE: 3807 FUNCTION: get_diskio_1() 80116438: OFFSET_verify+96 800f55da: get_diskio_1+62 800f5c52: display_all_diskio+1318 8006ff1c: exec_command+972 dev: invalid structure member offset: request_queue_rq FILE: dev.c LINE: 3807 FUNCTION: get_diskio_1() The following fix just uses "root_rl" instead of "rq". Not completely sure, if this is sufficient. With the fix I get: crash> dev -d MAJOR GENDISK NAME REQUEST QUEUE TOTAL ASYNC SYNC DRV 94 0x1ea144a8 dasda 0x1ebcc2b8 0 0 0 0 9 0x1e93d9c8 md0 0x1ebcb560 0 0 0 0 --- dev.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/dev.c +++ b/dev.c @@ -4050,7 +4050,11 @@ void diskio_init(void) MEMBER_OFFSET_INIT(request_list_count, "request_list", "count"); MEMBER_OFFSET_INIT(request_queue_in_flight, "request_queue", "in_flight"); - MEMBER_OFFSET_INIT(request_queue_rq, "request_queue", "rq"); + if (MEMBER_EXISTS("request_queue", "rq")) + MEMBER_OFFSET_INIT(request_queue_rq, "request_queue", "rq"); + else + MEMBER_OFFSET_INIT(request_queue_rq, + "request_queue", "root_rl"); MEMBER_OFFSET_INIT(subsys_private_klist_devices, "subsys_private", "klist_devices"); MEMBER_OFFSET_INIT(subsystem_kset, "subsystem", "kset");
-- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility