On Tue, 24 Jan 2017 06:54:46 +0000
Dexuan Cui <de...@microsoft.com> wrote:

> +static inline void
> +init_cached_read_index(struct vmbus_channel *channel)
> +{
> +     struct hv_ring_buffer_info *rbi = &channel->inbound;
> +
> +     rbi->cached_read_index = rbi->ring_buffer->read_index;
> +}

Looks good thanks. This should go in right away. Which versions are impacted?
Should it also go to stable?

In a future patch, the API function names for interacting with the ring buffer
should be changed to all have common prefix (hv_) and maybe do a little 
rethinking
about what needs to be in ring buffer and what could be local variables.

For example, the cached_read_index is only useful over the span of the loop
reading from the ring buffer. For me, it would be cleaner with a ring_buffer
iterator object which could abstract the API better. 

        struct vmbus_ringbuffer_iter iter;

        vmbus_begin_read(&iter, channel);
        while ((desc = vmbus_next_read(&iter), channel) {
            ...
        }
        vmbus_end_read(&iter, channel);

Reply via email to