-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FR][NVME-MI] Command level timeout #553
Comments
Should be possible, yep. In the case where an API call involves multiple NVMe-MI commands (ie, multiple messages sent & received): are you looking for a timeout on the whole call, or changing the timeout on individual messages of that command? |
Can you give an example function what is the multi-msg cmd? |
The log page with mi chuck? |
If that is the case, the API should define the unified timeout for all involving mctp transactions, given the timeout is on mctp packet level, not message/command level. |
Yep, anything requiring chunking; currently Get Log Page, but we should define a general policy.
The MCTP packet level is not really suitable here: there are no timeouts on individual packets, as there are no per-packet responses (and the packetisation is not visible to the socket interface). There may be many packets in flight for each MCTP message. So, we would be defining the timeout at the NVMe-MI command level (ie, corresponding to the MCTP message level) here. In this case: the timeout would apply separately to each NVMe-MI command + response, rather than the As an example:
this would not timeout, because each command+response is completed before the 2-sec timeout. Is that what you're intending? |
Yeah, the timeout attached on submit is on message level, not the packet level. And the mechanism you described works for me. |
Sounds good! I'll put something together. |
I assume we close this one, due no progress. FWIW, the nvme-cli learned a global |
If it's okay with you, I'd like to keep this open - seems like a worthwhile feature in general. However, if you'd prefer to keep the issues tidier, I can track elsewhere instead :) |
I am fine with keeping it here open. I was just not sure what's the status is and also too stupid to check the label which says 'enhancement'... |
The current timeout implement for libnvme-mi is to attach the timeout to mctp endpoint, i.e. all transactions under same EP share the same timeout.
To comparison, the inband implemented the timeout on io level (i.e. per transaction).
The user case is some time-consuming cmd (e.g. FW commit) will not share the global timeout. The difference between inband and oob makes the client hard to implement a unified solution.
@jk-ozlabs
Is it possible to implement the timeout the same way as inband? So the timeout should be part of the input arg of each cmd?
The text was updated successfully, but these errors were encountered: