On Tue, Mar 04, 2014 at 09:56:42AM +0200, Michael S. Tsirkin wrote: > On Mon, Mar 03, 2014 at 11:44:23AM -0800, Paul E. McKenney wrote: > > Hello, Michael, > > > > Just curious about the purpose of the rcu_dereference_index_check() in > > vhost_has_feature(). I don't see how it fits in. The closest thing > > I see if the use in handle_rx(), where it selects vq->log or NULL. But > > in that case, I would expect the usual RCU usage pattern to wrap an > > rcu_dereference() around the vq->log. > > > > Enlightenment? > > > > Thanx, Paul > > Hi Paul, > > Yes, it's weird. As you say the use is in handle_rx. > The way it's supposed to work is that readers take vq mutex, and > writers change the value and then take and release > vq mutex. > We did it like this because there are thinkably multiple vqs. > > I tried to document it in vhost.h : > /* Readers use RCU to access memory table pointer > * log base pointer and features. > * Writers use mutex below.*/ > > If this is a problem, it's possible to restructure the code to avoid > this pattern for vhost_has_feature, pls let me know.
I am not yet sure whether or not it is a problem, it just looked a bit strange. ;-) Thanx, Paul > Thanks a lot for paying attention! > > > -- > MST > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/