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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to