summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2019-06-19 10:33:04 -0400
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2019-07-09 10:30:25 -0400
commit40088f0e9b62d7fa033918b54ef45f8bf7d1ad1c (patch)
tree2fe9d38dcff3448adf8861089e0cde2081d7d82c /tools
parent847568942f93e0af77e4bb8a098899f310cb3a88 (diff)
downloadlinux-40088f0e9b62d7fa033918b54ef45f8bf7d1ad1c.tar.gz
linux-40088f0e9b62d7fa033918b54ef45f8bf7d1ad1c.tar.bz2
linux-40088f0e9b62d7fa033918b54ef45f8bf7d1ad1c.zip
xprtrdma: Add mechanism to place MRs back on the free list
When a marshal operation fails, any MRs that were already set up for that request are recycled. Recycling releases MRs and creates new ones, which is expensive. Since commit f2877623082b ("xprtrdma: Chain Send to FastReg WRs") was merged, recycling FRWRs is unnecessary. This is because before that commit, frwr_map had already posted FAST_REG Work Requests, so ownership of the MRs had already been passed to the NIC and thus dealing with them had to be delayed until they completed. Since that commit, however, FAST_REG WRs are posted at the same time as the Send WR. This means that if marshaling fails, we are certain the MRs are safe to simply unmap and place back on the free list because neither the Send nor the FAST_REG WRs have been posted yet. The kernel still has ownership of the MRs at this point. This reduces the total number of MRs that the xprt has to create under heavy workloads and makes the marshaling logic less brittle. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions