Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
3
-
14972
Description
In ldlm_run_ast_work() errors from ptlrpc_set_wait() are not returned to the caller. In ldlm_process_inodebits_lock() error returns (other than -ERESTART) from ldlm_run_ast_work() are ignored.
Oleg and I discussed this a bit:
[14:20:47] John Hammond: In ldlm_run_ast_work() we ignore errors from ptlrpc. Is this intentional, unintentional, or other?
[14:21:32] John Hammond: Also the callers of ldlm_run_ast_work() often do not propagate its errors.
[14:21:46] Oleg Drokin: the idea is that we cannot do anything about it.
[14:21:53] Oleg Drokin: there was some patch somewhere t od oresends
[14:22:06] John Hammond: Yes. Looking at that now.
[14:22:20] John Hammond: You mean http://review.whamcloud.com/#/c/9335/ right?
[14:22:45] Oleg Drokin: yes, that would be part of this
[14:24:59] John Hammond: My thought was: If there is an error in ptlrpc then currently the handler just gets stuck in ldlm_completion_ast(). Wouldn't it be better to return an error back to the client in this situation?
[14:48:33] Oleg Drokin: it gets stuck?
[14:49:31] John Hammond: Sure. Waiting for the lock to be granted.
[14:53:07] Oleg Drokin: we probably should just call failed_ast on the spot for that particular lock to evict entire client. returning an error does not tell us much because there might be more than one lock blocking granting ofthis one and such