staging/lustre/ptlrpc: update imp_known_replied_xid on resend-replay
authorNiu Yawei <yawei.niu@intel.com>
Thu, 17 Nov 2016 01:05:30 +0000 (20:05 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Nov 2016 15:32:32 +0000 (16:32 +0100)
The imp_known_replied_xid should be updated when try to resend
an already replied replay request, because the xid of this replay
request could be less than current imp_known_replied_xid.

Signed-off-by: Niu Yawei <yawei.niu@intel.com>
Reviewed-on: http://review.whamcloud.com/22776
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-8645
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/ptlrpc/recover.c

index 344aedd5bd59de75a1015e36ce5eb5efc1910e0c..c00449036884591f7b5910242ee39a646237eb43 100644 (file)
@@ -161,8 +161,10 @@ int ptlrpc_replay_next(struct obd_import *imp, int *inflight)
         * unreplied list.
         */
        if (req && imp->imp_resend_replay &&
-           list_empty(&req->rq_unreplied_list))
+           list_empty(&req->rq_unreplied_list)) {
                ptlrpc_add_unreplied(req);
+               imp->imp_known_replied_xid = ptlrpc_known_replied_xid(imp);
+       }
 
        imp->imp_resend_replay = 0;
        spin_unlock(&imp->imp_lock);