Blame SOURCES/rhbz2081102.patch

c65db7
commit 093b972294256b3ad68712daecdfdc5da1418a13
c65db7
Author: Martin Cermak <mcermak@redhat.com>
c65db7
Date:   Mon May 9 20:00:15 2022 +0200
c65db7
c65db7
    refix PR28634 for rhel8+ kernels
c65db7
    
c65db7
    The rhel kernel backports do not always align to upstream, so that
c65db7
    the KERNEL_VERSION() based gate needs to be updated using a version
c65db7
    that does the expected thing for the rhel{7,8,9} kernels.
c65db7
c65db7
diff --git a/tapset/linux/ioscheduler.stp b/tapset/linux/ioscheduler.stp
c65db7
index 3096a73ea..c7231878d 100644
c65db7
--- a/tapset/linux/ioscheduler.stp
c65db7
+++ b/tapset/linux/ioscheduler.stp
c65db7
@@ -11,7 +11,7 @@
c65db7
 // </tapsetdescription>
c65db7
 %{
c65db7
 #include <linux/blkdev.h>
c65db7
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5,16,0)
c65db7
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,18,0)
c65db7
 #include <linux/elevator.h>
c65db7
 #endif
c65db7
 %}
c65db7
@@ -41,7 +41,7 @@ probe ioscheduler.elv_next_request = kernel.function("blk_peek_request") !,
c65db7
  */
c65db7
 probe ioscheduler.elv_next_request.return =
c65db7
 		kernel.function("blk_peek_request").return !,
c65db7
-		kernel.function("elv_next_request").return
c65db7
+		kernel.function("elv_next_request").return ?
c65db7
 {
c65db7
 	name = "elv_next_request"
c65db7
 	if ($return == 0)  {
c65db7
@@ -80,18 +80,14 @@ probe ioscheduler.elv_completed_request
c65db7
 			@choose_defined($q->elevator->elevator_type->elevator_name,
c65db7
                                         @choose_defined($q->elevator->elevator_name,
c65db7
                                                         0))), "")
c65db7
-	if($rq == 0)  {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	} else {
c65db7
-		if($rq->rq_disk == 0)  {
c65db7
-			disk_major = -1
c65db7
-			disk_minor = -1
c65db7
-		} else {
c65db7
-			disk_major = $rq->rq_disk->major
c65db7
-			disk_minor = $rq->rq_disk->first_minor
c65db7
-		}
c65db7
-	}
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
+            disk_major = $rq->rq_disk->major
c65db7
+            disk_minor = $rq->rq_disk->first_minor
c65db7
+        }
c65db7
 
c65db7
 	rq = $rq
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
@@ -111,7 +107,7 @@ probe ioscheduler.elv_completed_request
c65db7
 // when a request is added to the request queue
c65db7
 probe ioscheduler.elv_add_request.kp =
c65db7
 		kernel.function("elv_insert") !,
c65db7
-		kernel.function("__elv_add_request")
c65db7
+		kernel.function("__elv_add_request") ?
c65db7
 {
c65db7
 	name = "elv_add_request"
c65db7
 	elevator_name = kernel_string(
c65db7
@@ -120,18 +116,15 @@ probe ioscheduler.elv_add_request.kp =
c65db7
                                         @choose_defined($q->elevator->elevator_name,
c65db7
                                                         0))), "")
c65db7
 	q = $q
c65db7
-	if($rq == 0)  {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	} else {
c65db7
-		if($rq->rq_disk == 0)  {
c65db7
-			disk_major = -1
c65db7
-			disk_minor = -1
c65db7
-		} else {
c65db7
-			disk_major = $rq->rq_disk->major
c65db7
-			disk_minor = $rq->rq_disk->first_minor
c65db7
-		}
c65db7
-	}
c65db7
+
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
+            disk_major = $rq->rq_disk->major
c65db7
+            disk_minor = $rq->rq_disk->first_minor
c65db7
+        }
c65db7
 
c65db7
 	rq = $rq
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
@@ -160,11 +153,11 @@ probe ioscheduler.elv_add_request.tp = kernel.trace("block_rq_insert") ?
c65db7
                                                                 0))), "")
c65db7
 	rq = $rq
c65db7
 
c65db7
-	if ($rq == 0 || $rq->rq_disk ==0) {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	}
c65db7
-	else {
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
 		disk_major = $rq->rq_disk->major
c65db7
 		disk_minor = $rq->rq_disk->first_minor
c65db7
 	}
c65db7
@@ -184,7 +177,7 @@ probe ioscheduler.elv_add_request.tp = kernel.trace("block_rq_insert") ?
c65db7
  *
c65db7
  */
c65db7
 probe ioscheduler.elv_add_request =
c65db7
-	ioscheduler.elv_add_request.tp !, ioscheduler.elv_add_request.kp
c65db7
+	ioscheduler.elv_add_request.tp !, ioscheduler.elv_add_request.kp ?
c65db7
 {}
c65db7
 
c65db7
 /**
c65db7
@@ -211,14 +204,14 @@ probe ioscheduler_trace.elv_completed_request
c65db7
 
c65db7
 	rq = $rq
c65db7
 
c65db7
-	if ($rq == 0 || $rq->rq_disk ==0) {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	}
c65db7
-	else {
c65db7
-		disk_major = $rq->rq_disk->major
c65db7
-		disk_minor = $rq->rq_disk->first_minor
c65db7
-	}
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
+            disk_major = $rq->rq_disk->major
c65db7
+            disk_minor = $rq->rq_disk->first_minor
c65db7
+        }
c65db7
 
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
 		: @choose_defined($rq->cmd_flags, $rq->flags)
c65db7
@@ -247,14 +240,14 @@ probe ioscheduler_trace.elv_issue_request
c65db7
                                                                 0))), "")
c65db7
 	rq = $rq
c65db7
 
c65db7
-	if ($rq == 0 || $rq->rq_disk ==0) {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	}
c65db7
-	else {
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
 		disk_major = $rq->rq_disk->major
c65db7
 		disk_minor = $rq->rq_disk->first_minor
c65db7
-	}
c65db7
+        }
c65db7
 
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
 		: @choose_defined($rq->cmd_flags, $rq->flags)
c65db7
@@ -283,14 +276,14 @@ probe ioscheduler_trace.elv_requeue_request
c65db7
                                                                 0))), "")
c65db7
 	rq = $rq
c65db7
 
c65db7
-	if ($rq == 0 || $rq->rq_disk ==0) {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	}
c65db7
-	else {
c65db7
-		disk_major = $rq->rq_disk->major
c65db7
-		disk_minor = $rq->rq_disk->first_minor
c65db7
-	}
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
+            disk_major = $rq->rq_disk->major
c65db7
+            disk_minor = $rq->rq_disk->first_minor
c65db7
+        }
c65db7
 
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
 		: @choose_defined($rq->cmd_flags, $rq->flags)
c65db7
@@ -318,14 +311,14 @@ probe ioscheduler_trace.elv_abort_request
c65db7
                                                                 0))), "")
c65db7
 	rq = $rq
c65db7
 
c65db7
-	if ($rq == 0 || $rq->rq_disk ==0) {
c65db7
-		disk_major = -1
c65db7
-		disk_minor = -1
c65db7
-	}
c65db7
-	else {
c65db7
-		disk_major = $rq->rq_disk->major
c65db7
-		disk_minor = $rq->rq_disk->first_minor
c65db7
-	}
c65db7
+        disk_major = -1
c65db7
+        disk_minor = -1
c65db7
+        // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
c65db7
+        // block: remove the ->rq_disk field in struct request
c65db7
+        if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
c65db7
+            disk_major = $rq->rq_disk->major
c65db7
+            disk_minor = $rq->rq_disk->first_minor
c65db7
+        }
c65db7
 
c65db7
 	rq_flags = ($rq == 0) ? 0
c65db7
 		: @choose_defined($rq->cmd_flags, $rq->flags)
c65db7
diff --git a/testsuite/buildok/ioscheduler-all-probes.stp b/testsuite/buildok/ioscheduler-all-probes.stp
c65db7
index da182c774..a8d8e08c5 100755
c65db7
--- a/testsuite/buildok/ioscheduler-all-probes.stp
c65db7
+++ b/testsuite/buildok/ioscheduler-all-probes.stp
c65db7
@@ -2,6 +2,6 @@
c65db7
 
c65db7
 // Tests if all probes in the ioscheduler tapset are resolvable.
c65db7
 
c65db7
-probe ioscheduler.*, ioscheduler.*.return {}
c65db7
+probe ioscheduler.* ?, ioscheduler.*.return ? {}
c65db7
 
c65db7
 probe ioscheduler_trace.* ? {}
c65db7
diff --git a/testsuite/buildok/ioscheduler-detailed.stp b/testsuite/buildok/ioscheduler-detailed.stp
c65db7
index 143f20cd6..033e955dc 100755
c65db7
--- a/testsuite/buildok/ioscheduler-detailed.stp
c65db7
+++ b/testsuite/buildok/ioscheduler-detailed.stp
c65db7
@@ -6,24 +6,24 @@
c65db7
 # test the kprobes aliases (*.kp).  This could cause them to get out
c65db7
 # of sync with the kprobed functions.  So, we test them explicitly.
c65db7
 
c65db7
-probe ioscheduler.elv_next_request
c65db7
+probe ioscheduler.elv_next_request ?
c65db7
 {
c65db7
 	printf("%s: %s\n", name, elevator_name)
c65db7
 }
c65db7
-probe ioscheduler.elv_next_request.return
c65db7
+probe ioscheduler.elv_next_request.return ?
c65db7
 {
c65db7
 	printf("name: %s, %d, %d, %p, %d", name, disk_major,
c65db7
 	       disk_minor, rq, rq_flags)
c65db7
 }
c65db7
 
c65db7
-probe ioscheduler.elv_completed_request
c65db7
+probe ioscheduler.elv_completed_request ?
c65db7
 {
c65db7
 	printf("name: %s, elv_name: %s, %d, %d, %p, %d", name, elevator_name,
c65db7
 	       disk_major, disk_minor, rq, rq_flags)
c65db7
 }
c65db7
 
c65db7
-probe ioscheduler.elv_add_request,
c65db7
-      ioscheduler.elv_add_request.kp,
c65db7
+probe ioscheduler.elv_add_request ?,
c65db7
+      ioscheduler.elv_add_request.kp ?,
c65db7
       ioscheduler.elv_add_request.tp ?
c65db7
 {
c65db7
 	printf("name: %s, elv_name: %s, %d, %d, %p, %d", name, elevator_name,