what I can do to get the ATA error output by sending an incorrect ATA command on purpose #19
Replies: 4 comments
-
|
Sorry lost your question, this will be releated to #20 . This discussion will post here to who have the same question. |
Beta Was this translation helpful? Give feedback.
-
|
Waitting an answer: a small question , it seems the LBA field is not decode correctly. on the same host(kernel 5.15). In the sata analyzer the return lba is ff(low) ff(mid) ff(high). But the new code return ff(low) 00(mid) 00(high). |
Beta Was this translation helpful? Give feedback.
-
|
from https://sg.danny.cz/sg/p/sg_v3_ho.html#id2495574. sb_len_wr I guess the valid data length in sense_buffer is 18, although we allocate 32 bytes . For example: only lbal is valid. @LeeJeffrey I will try to work around it in some way finally, Plz keep patient. |
Beta Was this translation helpful? Give feedback.
-
|
@LeeJeffrey We cannot work around it, because the driver only premit 18-length bytes returned. New kernel can be used to avoid it. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi, I am now using the pydiskcmd lib to do some ATA protocol test. Some test cases need to send some incorrect field bit on purpose and see the STATUS and ERROR field in ATA error output. This means I need to be able to retrieve the value of ata_pass_thr_return_descriptor even if asc and ascq are incorrect. But the lib always raise an ExecuteCmdErr exception.
How I can do to get the ata status return by this situation.
for example , I create a ata command "read sector ext" by my own. and set the lba field to 0xfffffffff (larger than the max lba range). I expected to get the ata status return and see the STATUS value. But there is always an ExecuteCmdErr exception raised:
Check Condition: Illegal Request(0x05) ASC+Q:LOGICAL BLOCK ADDRESS OUT OF RANGE(0x2100) (Based on Command Execute Error:0x5, Common Error:0x0)
Here is a snapshot which is captured by the SATA protocol Analyzer to show the command:
And I want to get the error output result(the red box position)
Hope u can see this post and help me out.
Beta Was this translation helpful? Give feedback.
All reactions