Hello all, Looking at cached_dev_make_request() (the queue->make_request_fn callback), it sounds like every bio is passed through check_should_bypass(), which appears to spinlock dc->io_lock for every bio during sequential task analysis. If so, then this prevents multiprocessor IO parallelism by requiring that the lock be held for every IO and could cause cache line bouncing of the lock between sockets. I'm soliciting feedback about converting hlist_for_each_entry to hlist_for_each_entry_rcu and related functions: http://lwn.net/Articles/264090/ https://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/x490.html Has anyone already tried this? Is the serialization caused by check_should_bypass() necessary in some less than obvious way such that it might cause other synchronization issues? Are there any data integrity concerns here that I am missing? Any other thoughts or ideas on the subject would be greatly appreciated! -Eric -- Eric Wheeler, President eWheeler, Inc. dba Global Linux Security 888-LINUX26 (888-546-8926) Fax: 503-716-3878 PO Box 25107 www.GlobalLinuxSecurity.pro Linux since 1996! Portland, OR 97298 -- To unsubscribe from this list: send the line "unsubscribe linux-bcache" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html