想在org.cleversafe.layer.iscsi.PrototypeiSCSITarget中改。
org.cleversafe.layer.iscsi.PrototypeiSCSITarget中的很多模块在读写时有的时候没有被用到,很奇怪。
例如:
org.cleversafe.layer.iscsi.PrototypeiSCSITarget.writeData(Nexus, long, ByteBuffer)
org.cleversafe.layer.iscsi.PrototypeiSCSITarget.readData(Nexus, long, ByteBuffer)
后来测又有用。算了还是以这个来吧,回头再测测,很奇怪。
测过以后,正如代码注释中提到的,writeData是反的,是读,读的时候是正常的,能找到数据。
但写的时候,在readData中数据是空的,全零,是不是写完以后被清空了?
最后发现是写入的数据是后来put进去的(就在本函数的最后)。可以写在后面。
好了,断层找到了,来看一下上下关系。
系统中是由org.cleversafe.layer.target.tasks.WriteGridTask
调用PrototypeiSCSITarget的。
<=org.cleversafe.layer.target.tasks.GridTaskFactory
<=org.jscsi.scsi.lu.AbstractLogicalUnit.enqueue(TargetTransportPort, Command)
<=org.cleversafe.layer.target.lu.GridLogicalUnit
最后就成LogicalUnit,在org.jscsi.scsi.tasks.management.DefaultTaskRouter中被其它模块调用。