[Crash-utility] [PATH] crash: Fix "dev -d" for recent kernels

Michael Holzheu holzheu at linux.vnet.ibm.com
Fri Mar 8 14:20:17 UTC 2013


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 at kernel.org>
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");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: crash-6.1.4-fix-dev-d.patch
Type: text/x-patch
Size: 1944 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20130308/86e244a6/attachment.bin>


More information about the Crash-utility mailing list