1 package org.jscsi.target.connection.stage.fullfeature;
2
3
4 import org.jscsi.target.connection.phase.TargetFullFeaturePhase;
5 import org.jscsi.target.scsi.cdb.CommandDescriptorBlock;
6 import org.jscsi.target.scsi.cdb.ReadOrWriteCdb;
7 import org.jscsi.target.scsi.sense.senseDataDescriptor.senseKeySpecific.FieldPointerSenseKeySpecificData;
8
9
10
11
12
13
14
15
16 public abstract class ReadOrWriteStage extends TargetFullFeatureStage {
17
18 public ReadOrWriteStage (TargetFullFeaturePhase targetFullFeaturePhase) {
19 super(targetFullFeaturePhase);
20 }
21
22
23
24
25
26
27
28
29
30
31 protected void checkOverAndUnderflow (final ReadOrWriteCdb cdb) {
32
33 final int boundsCheck = session.getStorageModule().checkBounds(cdb.getLogicalBlockAddress(), cdb.getTransferLength());
34
35 if (boundsCheck == 1)
36 cdb.addIllegalFieldPointerForLogicalBlockAddress();
37 else if (boundsCheck == 2) cdb.addIllegalFieldPointerForTransferLength();
38 }
39
40 }