io: Fix IO state provider for traces with lttng 2.12+

The rwbs field of the block event is an enum as of lttng 2.12, its
numerical value can be retrieved using the
getEventField(Integer.class, "rwbs") method instead of the getField,
which returns the enum pair.

Change-Id: I1ee626cf7d70a8c54caac4a30856aa4d432ea2d5
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/159228
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockFrontMergeHandler.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockFrontMergeHandler.java
index db750f6..b54b0bb 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockFrontMergeHandler.java
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockFrontMergeHandler.java
@@ -54,7 +54,10 @@
         int nrSector = ((Long) content.getField(getLayout().fieldBlockNrSector()).getValue()).intValue();
         Long rqSector = sector + nrSector;
         int dev = ((Long) content.getField(getLayout().fieldBlockDeviceId()).getValue()).intValue();
-        int rwbs = ((Long) content.getField(getLayout().fieldBlockRwbs()).getValue()).intValue();
+        Integer rwbs = content.getFieldValue(Integer.class, getLayout().fieldBlockRwbs());
+        if (rwbs == null) {
+            return;
+        }
         DiskWriteModel disk = fStateProvider.getDisk(dev);
 
         Request request = disk.getWaitingRequest(rqSector);
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqComplete.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqComplete.java
index ece0022..17c33f3 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqComplete.java
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqComplete.java
@@ -53,7 +53,10 @@
         Long sector = NonNullUtils.checkNotNull((Long) content.getField(getLayout().fieldBlockSector()).getValue());
         int nrSector = ((Long) content.getField(getLayout().fieldBlockNrSector()).getValue()).intValue();
         int phydisk = ((Long) content.getField(getLayout().fieldBlockDeviceId()).getValue()).intValue();
-        int rwbs = ((Long) content.getField(getLayout().fieldBlockRwbs()).getValue()).intValue();
+        Integer rwbs = content.getFieldValue(Integer.class, getLayout().fieldBlockRwbs());
+        if (rwbs == null) {
+            return;
+        }
         DiskWriteModel disk = fStateProvider.getDisk(phydisk);
 
         Request request = disk.getDriverRequest(sector);
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqInsertHandler.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqInsertHandler.java
index 5489f8b..f6d4081 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqInsertHandler.java
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqInsertHandler.java
@@ -54,7 +54,10 @@
         int phydisk = ((Long) content.getField(getLayout().fieldBlockDeviceId()).getValue()).intValue();
         Long sector = NonNullUtils.checkNotNull((Long) content.getField(getLayout().fieldBlockSector()).getValue());
         int nrSector = ((Long) content.getField(getLayout().fieldBlockNrSector()).getValue()).intValue();
-        int rwbs = ((Long) content.getField(getLayout().fieldBlockRwbs()).getValue()).intValue();
+        Integer rwbs = content.getFieldValue(Integer.class, getLayout().fieldBlockRwbs());
+        if (rwbs == null) {
+            return;
+        }
         DiskWriteModel disk = fStateProvider.getDisk(phydisk);
 
         if (nrSector == 0) {
diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqIssueHandler.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqIssueHandler.java
index 4f15d6f..1b27da5 100644
--- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqIssueHandler.java
+++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/inputoutput/handlers/BlockRqIssueHandler.java
@@ -54,8 +54,8 @@
         Integer phydisk = ((Long) content.getField(getLayout().fieldBlockDeviceId()).getValue()).intValue();
         Long sector = NonNullUtils.checkNotNull((Long) content.getField(getLayout().fieldBlockSector()).getValue());
         Integer nrSector = ((Long) content.getField(getLayout().fieldBlockNrSector()).getValue()).intValue();
-        Integer rwbs = ((Long) content.getField(getLayout().fieldBlockRwbs()).getValue()).intValue();
-        if (nrSector == 0) {
+        Integer rwbs = content.getFieldValue(Integer.class, getLayout().fieldBlockRwbs());
+        if (rwbs == null || nrSector == 0) {
             return;
         }