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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux