On 03/31/2016 10:04 PM, Mike Snitzer wrote: > The primary motivation of this commit is to improve the scalability of > DM multipath on large NUMA systems where m->lock spinlock contention has > been proven to be a serious bottleneck on really fast storage. > > The ability to atomically read a pointer, using lockless_dereference(), > is leveraged in this commit. But all pointer writes are still protected > by the m->lock spinlock (which is fine since these all now occur in the > slow-path). > > The following functions no longer require the m->lock spinlock in their > fast-path: multipath_busy(), __multipath_map(), and do_end_io() > > And choose_pgpath() is modified to _not_ update m->current_pgpath unless > it also switches the path-group. This is done to avoid needing to take > the m->lock everytime __multipath_map() calls choose_pgpath(). > But m->current_pgpath will be reset if it is failed via fail_path(). > > Suggested-by: Jeff Moyer <jmoyer@xxxxxxxxxx> > Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx> > --- > drivers/md/dm-mpath.c | 170 +++++++++++++++++++++++++++----------------------- > 1 file changed, 93 insertions(+), 77 deletions(-) > I really like this :-) Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> Tested-by: Hannes Reinecke <hare@xxxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke Teamlead Storage & Networking hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg) -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel