From 99cf918d43c8e32ee15e9324c729eb174ee80635 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Genevi=C3=A8ve=20Bastien?= Date: Tue, 7 Feb 2017 11:10:00 -0500 Subject: [PATCH] os.linux: Fix NPE in input/output analysis MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The block rq sector field is not present in the block_bio_frontmerge event, but can easily be computed from the other field data. Change-Id: Ib5b056d97cffac82a8bcfa1be80bc713504091a1 Signed-off-by: Geneviève Bastien Reviewed-on: https://git.eclipse.org/r/90555 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam Tested-by: Matthew Khouzam --- .../testfiles/io_analysis/io_missing.xml | 1 - .../testfiles/io_analysis/io_req_merge.xml | 1 - .../core/inputoutput/handlers/BlockFrontMergeHandler.java | 4 ++-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_missing.xml b/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_missing.xml index f13caa5f19..d825309f45 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_missing.xml +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_missing.xml @@ -29,7 +29,6 @@ - diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_req_merge.xml b/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_req_merge.xml index 3a9844ab7f..b0bff05a86 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_req_merge.xml +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core.tests/testfiles/io_analysis/io_req_merge.xml @@ -19,7 +19,6 @@ - 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 7b906a0a7a..ea43949df6 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 @@ -49,15 +49,15 @@ public class BlockFrontMergeHandler extends KernelEventHandler { long ts = event.getTimestamp().getValue(); Long sector = NonNullUtils.checkNotNull((Long) content.getField(getLayout().fieldBlockSector()).getValue()); - Long rqSector = NonNullUtils.checkNotNull((Long) content.getField(getLayout().fieldBlockRqSector()).getValue()); 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(); DiskWriteModel disk = fStateProvider.getDisk(dev); Request request = disk.getWaitingRequest(rqSector); if (request == null) { - BlockIO bio = new BlockIO(rqSector, Long.valueOf(sector - rqSector).intValue(), disk, rwbs); + BlockIO bio = new BlockIO(rqSector, 1, disk, rwbs); request = new Request(bio); } BlockIO bio = new BlockIO(sector, nrSector, disk, rwbs); -- 2.34.1