On Fri, Oct 24, 2014 at 10:16:24AM -0500, Christoph Lameter wrote: > Hmmm... One optimization to do before we get into these changes is to work > on allowing the dropping of mmap_sem before we get to sleeping and I/O and > then reevaluate when I/O etc is complete? This is probably the longest > hold on mmap_sem that is also frequent. Then it may be easier to use > standard RCU later. The hold time isn't relevant, in fact breaking up the mmap_sem such that we require multiple acquisitions will just increase the cacheline bouncing. Also I think it makes more sense to continue an entire fault operation, including blocking, if at all possible. Every retry will just waste more time. Also, there is a lot of possible blocking, there's lock_page, page_mkwrite() -- which ends up calling into the dirty throttle etc. We could not possibly retry on all that, the error paths involved would be horrible for one. That said, there's a fair bit of code that does allow the retry, and I think most fault paths actually do the retry on IO. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>