|
LU-7903 reveals that REP-ACK is disabled in 2.8, this was introduced in LU-3538 http://review.whamcloud.com/#/c/12530/, which is to support DNE Commit-on-Sharing, but it disabled REP-ACK, while Commit-on-Sharing doesn't take effect for local operations (operation which involves only one MDT) either, this may cause single MDT recovery fail.
To fix this, we need to enable REP-ACK, and also make sure http://review.whamcloud.com/#/c/12530/ work as designed. The implementation will be like this:
1. save local locks upon unlock as before, but don't convert locks into COS mode.
2. reply_out_callback() wakes up ptlrpc_handle_rs(), if reply is not committed yet, convert locks into COS mode, otherwise decref locks like before.
3. later when the operation is committed, ptlrpc_commit_replies() wakes up ptlrpc_handle_rs() again, which will decref locks like before.
|