On 06 November 2017, I posted this six-part patch set for rgrp glock congestion and got no response. I'm resending it here to give people one last opportunity to review it before I push it to the for-next branch. It has been rebased, but otherwise unchanged. --- Original patch set description:
On 02 November, I posted a patch for this, but Steve Whitehouse pointed out a check that didn't look right. I tested it and found it to be unnecessary, so I remove it. Steve also pointed out that the patch tried to do too much. He asked which part of the patch actually made the performance gains. Based on Steve's suggestions, I've broken the changes into six patches for this patchset. The first five are all refactoring to make the code simpler and more easy to follow. Much of the complex special-case checks were consolidated from the variety of locations to more centralized functions. The actual performance gains are accomplished by the very last patch, "GFS2: Add checks for intra-node congestion". So strictly speaking, the last patch is the only patch we really need. But without the others, today's kludgy code becomes even more kludgy and harder to read. In doing all this, I did find a minor problem with the previous version's logic, and fixed it. I retested iozone performance and fragmentation. It is pretty much the same as I documented for the previous patch: Bob Peterson (6): GFS2: Simplify gfs2_rgrp_used_recently GFS2: Check gfs2_rgrp_used_recently inside gfs2_rgrp_congested GFS2: Refactor function fast_to_acquire GFS2: Simplify by checking fast_to_acquire in gfs2_rgrp_congested GFS2: Split gfs2_rgrp_congested into dlm and non-dlm cases GFS2: Add checks for intra-node congestion fs/gfs2/rgrp.c | 176 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 134 insertions(+), 42 deletions(-) -- 2.14.3
