想在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中被其它模块调用。
本文探讨了org.cleversafe.layer.iscsi.PrototypeiSCSITarget模块中的读写问题,发现writeData方法实际上执行的是读操作,而readData方法中数据为空。通过跟踪调用链路,最终确定了问题所在。
1011

被折叠的 条评论
为什么被折叠?



