mirror of
https://github.com/torvalds/linux
synced 2024-09-22 12:26:27 +00:00
xprtrdma: On invalidation failure, remove MWs from rl_registered
Callers assume the ro_unmap_sync and ro_unmap_safe methods empty
the list of registered MRs. Ensure that all paths through
fmr_op_unmap_sync() remove MWs from that list.
Fixes: 9d6b040978
("xprtrdma: Place registered MWs on a ... ")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
26fde4dfcb
commit
04d25b7d5d
|
@ -295,6 +295,7 @@ fmr_op_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
|
||||||
pr_err("rpcrdma: ib_unmap_fmr failed (%i)\n", rc);
|
pr_err("rpcrdma: ib_unmap_fmr failed (%i)\n", rc);
|
||||||
|
|
||||||
list_for_each_entry_safe(mw, tmp, &req->rl_registered, mw_list) {
|
list_for_each_entry_safe(mw, tmp, &req->rl_registered, mw_list) {
|
||||||
|
list_del_init(&mw->mw_list);
|
||||||
list_del_init(&mw->fmr.fm_mr->list);
|
list_del_init(&mw->fmr.fm_mr->list);
|
||||||
fmr_op_recover_mr(mw);
|
fmr_op_recover_mr(mw);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue